Módulo:Wikidata/Formatos

De Biquipedia

La documentación para este módulo puede ser creada en Módulo:Wikidata/Formatos/doc

local p = {}
local an = mw.language.new('an')
local moduloTablas				= require('Módulo:Tablas') 
	local elementoTabla 		= moduloTablas.elemento
	local enTabla       		= moduloTablas.en
	local insertarEnTabla		= moduloTablas.insertar
local moduloWikidata			= require('Módulo:Wikidata')
	local getPropiedatWikidata	= moduloWikidata.getPropiedat
	local formatoDatoWikidata	= moduloWikidata.formatoDato
local enlazarURL				= require('Módulo:URL').enlazar

function p.formatCoor(value)
    local cadenacoor = value
    return marco:preprocess('{{coord|' .. cadenacoor[tostring('latitude')] ..'|'.. cadenacoor[tostring('longitude')] .. '|format=dms}}')
end

-- Funciones pa entidates de Wikidata

function p.formatoChentilicio(valor, opcions, frame)
	local enlacePais, etiquetaPais, idEntidadPais = p.obtenerDatos(valor)
	
	local chentilicio 
	
	if etiquetaPais then 
		chentilicio = frame:preprocess('{{chentilicio|'.. etiquetaPais .. '|fs}}')
		
		if not chentilicio or chentilicio == '' then
			chentilicio = etiquetaPais
		end
	end
	
	return p.enlazar(enlacePais, chentilicio, idEntidadPais, opcions)
end

function plural(texto)
	if texto:match('^.*[aeiou]$') then -- 'hombre' => 'hombres', 'metro' => 'metros'
		texto = texto .. 's'
	elseif texto:match('^.*[^s]$') then -- 'muller' => 'mullers', 'pascal' => 'pascals', (*) 'siemens' => 'siemens'
		texto = texto .. 's'
	end
	return texto
end

function p.formatoUnidat(valor, opcions)
	cantidat = mw.ustring.gsub(valor.value['amount'], '+','')
	unidat = mw.wikibase.label(mw.ustring.gsub(valor.value['unit'], '^.-/(Q%d+)$', '%1'))
	if unidat and tonumber(cantidat) > 1 then
		textoUnidat = mw.ustring.gsub(unidat, '(%S+)', plural)
		-- correccions especificas d'os plurals:
		local correccions = {
			['caballos des vapores'] = 'caballos de vapor',
			['galóns'] = 'galons',
			['anyos luzes'] = 'anyos luz',
			['párseces'] = 'pársecs',
			['metros cubicos pores segundos'] = 'metros cubicos por segundo',
		}
		textoUnidat = correccions[textoUnidat] or textoUnidat
	end

	if not unidat or (opcions['formatoUnidat'] and opcions['formatoUnidat'] == 'numero') then
		return tonumber(cantidat)
	elseif unidat and opcions['formatoUnidat'] and opcions['formatoUnidat'] == 'minutos' and unidat == 'segundo' then
		local segundos = tostring(tonumber(cantidat)%60)
		if mw.ustring.len(segundos) == 1 then segundos = '0' .. segundos end
		return math.floor(tonumber(cantidat)/60) .. ':' .. segundos .. ' ' .. 'minutos'
	else
		return p.formatoNumero(cantidat) .. ((textoUnidat and ' ' .. textoUnidat) or '')
	end
end

function p.formatoNumero(valor, opcions)

	if valor['amount'] then valor = mw.ustring.gsub(valor['amount'], '+', '') end

	if not tonumber(valor) then return valor end

	local formato = valor
	while true do  
		formato, k = string.gsub(formato, "^(-?%d+)(%d%d%d)", '%1 %2')
		if (k==0) then
			break
		end
	end
	return formato
end

-- :: Funcions experimentales

-- Función pa obtener o wikitexto a partir d'una entidat de Wikidata perteneixient a una unidat
-- @param string val a entidat de Wikidata (con URL)
-- @return string o wikitexto, de trobar-se a valor correspondient
function p.getUnit(val)
	local vals = mw.loadData('Módulo:Wikidata/unidatz/datos')
    q = string.sub(val, 32)
    return	vals[q]
end

-- Alternativa a formatoUnidat()
-- @param table obchecto l'obchecto datavalue
-- @param table opcions una lista d'opcions. As opcions aceptadas son:
--   * string deseparador un deseparador (espacio duro por defecto)
--   * bool izquierda si colocar a unidat a a izquierda (por defecto va a la dreita)
function p.formatoUnidat2(objecto, opcions)
	local Valor	= elementoTabla(objecto, 'value')
	local Tipo	= elementoTabla(objecto, 'type')

	if Tipo == 'quantity' then
		if not opcions then opcions = {} end

		local Deseparador 	= opcions['deseparador'] or ' '
		local Izquierda		= opcions['izquierda']
		local Unidat = (function()
			local Unidat = elementoTabla(Valor, 'unit')
			if Unidat then return p.getUnit(Unidat .. '-plural') or p.getUnit(Unidat) end
		end)()

		if Unidat then
			Valor	= p.formatoNumero2(string.sub(elementoTabla(Valor, 'amount'), 2))
			if Izquierda then return Unidat .. Deseparador .. Valor end
			return Valor .. Deseparador .. Unidat
		end
	end
	return Valor
end

-- Función formatoNumero() alternativa.
-- Envoltura pa mw.language:formatNum(),
-- que permite tornar a valor entregada en cuentas de nil
-- @param num o numero, ya sea 'number' o 'string'
-- @return number a valor, en formato numerico
function p.formatoNumero2(valor, opcions)
	if not tonumber(valor) then return valor end
	if not opcions then opcions = {} end
	local Decimals = tonumber(opcions['decimals'])
	if opcions['noCommafy'] then noCommafy = true end

	if tonumber(Decimals) then return es:formatNum(tonumber(math.floor(valor * (10^Decimals)) / (10^Decimals)), noCommafy) end
	return es:formatNum(tonumber(valor, noCommafy))
end

function p.formatoCargo(valor, opcions, frame, calificativos)
	local enlaceCargo, etiquetaCargo, idEntidatCargo = p.obtenerDatos(valor)
	local cargoEnlazau = p.enlazar(enlaceCargo, etiquetaCargo, idEntidatCargo, opcions)
	
	if not cargoEnlazau then 
		return
	end
	
	-- De
	local enlaceDe, etiquetaDe, idEntidatDe = p.obtenerDatos(elementoTabla(calificativos,'P642',1,'datavalue','value'))
	local deEnlazau = p.enlazar(enlaceDe, etiquetaDe, idEntidatDe, opcions)
	
	if deEnlazau then 
		cargoEnlazau = cargoEnlazau .. ' de ' .. deEnlazau
	end
	
	-- Districto electoral
	local enlaceDistrictoElectoral, etiquetaDistrictoElectoral, idEntidatDistrictoElectoral = p.obtenerDatos(elementoTabla(calificativos,'P768',1,'datavalue','value'))
	local DistrictoElectoralEnlazau = p.enlazar(enlaceDistritoElectoral, etiquetaDistrictoElectoral, idEntidatDistrictoElectoral, opcions)
	
	if DistrictoElectoralEnlazau then 
		cargoEnlazau = cargoEnlazau .. ' por ' .. DistrictoElectoralEnlazau
	end
	
	-- Emplegador
	local enlaceEmplegador, etiquetaEmpleador, idEntidatEmplegador = p.obtenerDatos(elementoTabla(calificativos,'P108',1,'datavalue','value'))
	local EmplegadorEnlazau = p.enlazar(enlaceEmplegador, etiquetaEmpleador, idEntidatEmplegador, opcions)
	
	if EmplegadorEnlazau then 
		cargoEnlazau = cargoEnlazau .. ' de ' .. EmplegadorEnlazau
	end
	
	local periodo = p.formatoPeriodo(calificativos, {})
	
	if periodo then
		return cargoEnlazau .. '&nbsp;<small>(' .. periodo .. ')</small>'
	else
		return cargoEnlazau
	end
end

-- Formatos de calificativos

function p.formatoPeriodo(valor, opcions)
	if not valor then
		return
	end
	
	local anyoInicio, anyoFin
	local calendataInicio, calendataFin
	local opcionsCalendata= {['formatoTexto']='mayúscla', ['formatoCalendata'] = 'anyo', ['enlace']='no'}

    local calendatasInicio = valor['P580']
    local calendatasFin    = valor['P582']
    local iCalendataInicio = 1
    local iCalendataFin    = 1
    
    if not calendatasInicio and not calendatasFin then
    	return
    end
    
    local periodos    = {}

	if calendatasInicio and calendatasInicio[1] then
		--if true then return require('Módulo:Tablas').tostring(calendatasInicio[1]) end
	    anyoInicio = formatoDatoWikidata(calendatasInicio[1],opcionsCalendata , {})
	    calendataInicio= anyoInicio -- de momento
	end
	
	if calendatasFin and calendatasFin[1] then
	    anyoFin  = formatoDatoWikidata(calendatasFin[1], opcionsCalendata, {})
	    calendataFin = anyoFin -- de momento
	end
	
    while calendataInicio or calendataFin do -- Por cada periodo
    	if calendataInicio and calendataFin and tonumber(calendataInicio) and tonumber(calendataFin) and (tonumber(calendataInicio) <= tonumber(calendataFin)) then
    		if anyoInicio == anyoFin then
    			table.insert(periodos, anyoInicio)
    		else
    			table.insert(periodos, anyoInicio .. '-' .. anyoFin)
    		end
		    iCalendataInicio = iCalendataInicio + 1
		    iCalendataFin    = iCalendataFin    + 1
		    
		    if calendatasInicio[iCalendataInicio] then
		    	anyoInicio = formatoDatoWikidata(calendatasInicio[iCalendataInicio],opcionsCalendata , {})
		    	calendataInicio= anyoInicio -- de momento
		    else
		    	anyoInicio	= nil
		    	calendataInicio= nil
		    end
		    
		    if calendatasFin[iCalendataFin] then
		    	anyoFin = formatoDatoWikidata(calendatasFin[iCalendataFin],opcionsCalendata , {})
		    	calendataFin= anyoFin -- de momento
		    else
		    	anyoFin	= nil
		    	calendataFin= nil
		    end		    
		elseif anyoInicio then
			table.insert(periodos, 'desde ' .. anyoInicio)
			
			iCalendataInicio = iCalendataInicio + 1
		    if calendatasInicio[iCalendataInicio] then
		    	anyoInicio = formatoDatoWikidata(calendatasInicio[iCalendataInicio],opcionsCalendata , {})
		    	calendataInicio= anyoInicio -- de momento
		    else
		    	anyoInicio	= nil
		    	calendataInicio= nil
		    end			
		elseif anyoFin then
			table.insert(periodos, 'hasta ' .. anyoFin)
		    iCalendataFin    = iCalendataFin    + 1			
			
		    if calendatasFin[iCalendataFin] then
		    	anyoFin = formatoDatoWikidata(calendatasFin[iCalendataFin],opcionsCalendata , {})
		    	calendataFin= anyoFin -- de momento
		    else
		    	anyoFin	= nil
		    	calendataFin= nil
		    end				
		end
    end
	
	return table.concat(periodos, ', ')
end

-- Funcions internas

-- As siguients funcions fan practicament o mesmo que a función
-- formatoIdEntidat d\'o módulo Wikidata.
-- p.obtenerDatos obtiene os datos d\'a entidat y p.enlazar los formatea.

function p.obtenerDatos(valor)
	if valor and valor['numeric-id'] then
	    local idEntidat = 'Q' .. valor['numeric-id']

        local etiqueta  = mw.wikibase.label( idEntidat )
        local enlace    = mw.wikibase.sitelink( idEntidat )	
        
        return enlace, etiqueta, idEntidat 
    end
end

function p.enlazarEnAtroIdioma(enlace, etiqueta, idioma)
	local categoria = '[[Categoría:Biquipedia:Pachinas con propiedatz de Wikidata con etiqueta en atro idioma]]'
	
	if enlace and etiqueta then
		return etiqueta .. ' <small>([[:' .. idioma .. ':' .. enlace .. '|' .. idioma .. ']])</small>' .. categoria
	elseif etiqueta then
		return etiqueta .. ' <small>(' .. idioma .. ')</small>' .. categoria
	elseif enlace then
		return enlace .. ' <small>([[:' .. idioma .. ':' .. enlace .. '|' .. idioma .. ']])</small>' .. categoria
	end
end

local yaEnlazau = {}

function p.enlazar(enlace, etiqueta, idEntidat, opcions)
	if not enlace and not etiqueta and not idEntidat then
		return
	end
	
	if opcions then
		-- Opciones d'as etiquetas
		
		if opcions.etiqueta and opcions.etiqueta ~= 'null' then		-- Por averiguar a on s'usa.
			etiqueta = opcions.etiqueta
		end
		
		--if opcions['espacioDeNombres'] then enlace = opcions['espacioDeNombres'] .. ':' .. enlace end
		
		--  Convertir o primer carácter a mayúscla en o suyo caso    
		if etiqueta and opcions['mayúscla'] == 'sí' then
			etiqueta = es:ucfirst(etiqueta)
		end
		
		-- Opciones de l'enlace
		if opcions['enlace'] ==  'no'  then
			-- No p.enlazar
			enlace = nil
		elseif opcions['debeExistir'] == 'sí' then
			-- No tornar cosa si no ye informau l'artíclo de Biquipedia
			if not enlace then
				return
			end
		elseif opcions['enlace'] ==  'sí' then
			if not enlace and etiqueta and not require('Módulo:Pachinas').existe(etiqueta) then
				-- Prener como enlace a etiqueta si no existe o correspondient artíclo
				enlace   = etiqueta
			end			
		end
	end
	
	-- No enlazar quantas vegadas o mesmo
	if enlace and yaEnlazau[enlace] then
		enlace = nil
	end
	
	-- Seguntes siga informada a etiqueta u o enlace
	local resultau
	
    if etiqueta and enlace and etiqueta ~= enlace then --Os dos si no son iguals
       resultau = '[[' .. enlace .. '|' .. etiqueta .. ']]'
       yaEnlazau[enlace] = true
    elseif enlace then    -- Nomás o enlace u os dos y son iguals
        resultau = '[[' .. enlace .. ']]'
        yaEnlazau[enlace] = true
    elseif etiqueta then  -- Nomás a etiqueta
        resultau = etiqueta
    elseif idEntidat then -- Nomás a entidat
       -- Obtener a etiqueta y o enlace de Wikidata d\'a Wikipedia anglesa, espanyola, francesa u alemana
       local entidat=mw.wikibase.getEntityObject(idEntidat)
       
       --if true then return require('Módulo:Tablas').tostring(entidat) end

       if entidat then
       		local idioma
       		for k, idioma in pairs({'en', 'es', 'fr', 'it', 'de'}) do
       	  		etiqueta = elementoTabla(entidat, 'labels', idioma, 'value')
       	  		enlace   = elementoTabla(entidat, 'sitelinks', idioma .. 'wiki', 'title')
       	  		if etiqueta or enlace then
       	     		resultau = p.enlazarEnAtroIdioma(enlace, etiqueta, idioma)
       	     		break
       	  		end
       		end
       	end
       
        if not resultau then
        	return '[[:d:'.. idEntidat .. '|sin etiquetar]]' .. 
              '[[Categoría:Biquipedia:Pachinas con propiedades de Wikidata sin etiqueta]]'
        end
    end
    
    -- Adhibir cursivas
    
    if opcions and opcions.cursivas == 'sí' then
    	resultau = "''" .. resultau .. "''"
    end
    
    return resultau
end

function p.formatId( value, options )
	local wikidata = require('Módulo:Wikidata')
    local id =  'Q'.. value['numeric-id']
    local opcions = {deseparador = '<br>',propiedat = options.propiedatValor, uno = 'sí', entityId = id, formatoTexto = 'mayúscla'}
    return wikidata.getPropiedat(opcions)
end

function p.formatoBandera2( value, options )
	local bandera = require('Módulo:Bandera')
	local id =  'Q'.. value['numeric-id']
	local label = mw.wikibase.label( 'Q' .. value['numeric-id'] ) or ''
	local tipo = mw.ustring.gsub(label,'(%D+)%sde%s%D+','%1')
	
	 if options.tallar and options.tallar ~= '' then
        coincidencia = mw.ustring.find( es:lc(options.tallar), es:lc(tipo), plain )
    end
    if coincidencia then
    	nombre = mw.ustring.gsub(label,'%D+%sde%s(%D+)','%1')
    elseif label and label ~= '' then
    	nombre = label
    end
    return bandera.banderaLua(id, '20px', '', nombre)
end
function p.formatoFicha( value, options )
	local ficha = require('Módulo:Ficha')
	local opcions = {propiedatValor='P31'} 
	local etiqueta  = p.formatId( value, opcions)
	options.tallar = etiqueta
	local parametros = {
		child = 'si',
		estiloetiqueta1 = 'border:0;font-weight:100;padding:0px 7px',
		estilodatos1 = 'border:0;font-weight:100;padding:0px 7px 0px 2px', 
		etiqueta1='&bull;&nbsp;'.. es:ucfirst(etiqueta),
		datos1 = p.formatoBandera2(value, options)}
    return ficha.infobox(parametros)
end

function p.formatoId ( value, options )
	return value['numeric-id'] and 'Q' .. value['numeric-id']
end

--*****************************************************************************
-- Funcions pa un elemento/entidat de Wikidata
--*****************************************************************************
function p.formatoObraAutor(valor, opcions, frame, calificativos)
	local idObra       = 'Q' .. valor['numeric-id']
	local entidatObra  = mw.wikibase.getEntityObject(idObra)
	local enlaceObra   = elementoTabla(entidatObra,'sitelinks','eswiki','title')
	local etiquetaObra = elementoTabla(entidatObra,'labels','es','value')
	local titolObraEnlazau = p.enlazar(enlaceObra, etiquetaObra, idObra, opcions)
	
	local declaracionAutors = elementoTabla(entidatObra, 'claims', 'P50')
	
	if declaracionAutors then
	   local autors = getPropiedatWikidata({['propiedat']='P50'}, entidatObra.claims['P50'])
	   
	   if autors then 
	   	   return "''" .. titolObraEnlazau .. "'' de " .. autors
	   end
	end
	
	local declaracionCreyadors = elementoTabla(entidatObra, 'claims', 'P170')
	
	if declaracionCreyadors then
	   local creadores = getPropiedatWikidata({['propiedat']='P170'}, entidatObra.claims['P170'])
	   
	   if creadores then 
	   	   return "''" .. titolObraEnlazau .. "'' de " .. creadores
	   end
	end
	
	return "''" .. titolObraEnlazau .. "''"
end

function p.formatoObraAnyo(valor, opcions, frame, calificativos)
	local idObra       = 'Q' .. valor['numeric-id']
	local entidatObra  = mw.wikibase.getEntityObject(idObra)
	local enlaceObra   = elementoTabla(entidatObra,'sitelinks','eswiki','title')
	local etiquetaObra = elementoTabla(entidatObra,'labels','es','value')
	local titolObraEnlazau = p.enlazar(enlaceObra, etiquetaObra, idObra, opcions)
	
	local declaracionCalendataPublicacion = elementoTabla(entidatObra, 'claims', 'P577')
	
	if declaracionCalendataPublicacion then
	   local anyoPublicacion = getPropiedatWikidata({['propiedat']='P577', ['formatoCalendata']='anyo', ['rangoMayor']='sí', ['enlace']='no', ['uno']='sí'}, declaracionCalendataPublicacion)
	   
	   if anyoPublicacion then 
	   	   return "''" .. titolObraEnlazau .. "'' (" .. anyoPublicacion .. ")"
	   end
	end
	
	return "''" .. titolObraEnlazau .. "''"
end

function p.formatoObraTitolOrichinalAnyo(valor, opcions, frame, calificativos)
	local idObra       = 'Q' .. valor['numeric-id']
	local entidatObra  = mw.wikibase.getEntityObject(idObra)
	local enlaceObra   = elementoTabla(entidatObra,'sitelinks','eswiki','title')
	local etiquetaObra = elementoTabla(entidatObra,'labels','es','value')
	local titolObraEnlazau = p.enlazar(enlaceObra, etiquetaObra, idObra, opcions)
	
	local titolOrichinal = elementoTabla(entidatObra, 'claims', 'P1476',1,'mainsnak','datavalue','value','text')
	
	local declaracionCalendataPublicacion = elementoTabla(entidatObra, 'claims', 'P577')
	local anyoPublicacion
	
	if declaracionCalendataPublicacion then
	   anyoPublicacion = getPropiedatWikidata({['propiedat']='P577', ['formatoCalendata']='anyo', ['enlace']='no'}, declaracionCalendataPublicacion)
	end
	
	if titolOrichinal and anyoPublicacion then
		return "''" .. titolObraEnlazau .. "'' (''" .. titolOrichinal .. "'', " .. anyoPublicacion .. ")"
	elseif titolOrichinal then
		return "''" .. titolObraEnlazau .. "'' (''" .. titolOrichinal .. "'')"
	elseif anyoPublicacion then
		return "''" .. titolObraEnlazau .. "'' (" .. anyoPublicacion .. ")"
	else
		return "''" .. titolObraEnlazau .. "''"
	end
end

local decadaAnterior

function p.formatoPersonaPremiadaPor(valor, opcions, frame, calificativos)
	local enlacePersona, etiquetaPersona, idEntidadPersona = p.obtenerDatos(valor)
	local personaEnlazada =  p.enlazar(enlacePersona, etiquetaPersona, idEntidadPersona, {['enlace'] =  'sí'})
	local calendata, decada, decadaFormateada
	local enlaceObraPremiada1, etiquetaObraPremiada1, idEntidadObraPremiada1, obraPremiadaEnlazada1
	local enlaceObraPremiada2, etiquetaObraPremiada2, idEntidadObraPremiada2, obraPremiadaEnlazada2
	local obraPremiadaEnlazada
	local opcionsCalendata= {['formatoTexto']='mayúscla', ['formatoCalendata'] = 'anyo', ['enlace']='no'}
	
	if calificativos then
		calendata = formatoDatoWikidata(elementoTabla(calificativos,'P585',1), opcionsCalendata , {}) -- Primera calendata
		
		enlaceObraPremiada1, etiquetaObraPremiada1, idEntidadObraPremiada1 = p.obtenerDatos(elementoTabla(calificativos,'P1686',1,'datavalue','value'))-- Premiado por
		enlaceObraPremiada2, etiquetaObraPremiada2, idEntidadObraPremiada2 = p.obtenerDatos(elementoTabla(calificativos,'P1686',2,'datavalue','value'))-- Premiado por		
		obraPremiadaEnlazada1 = p.enlazar(enlaceObraPremiada1, etiquetaObraPremiada1, idEntidadObraPremiada1, {['enlace'] =  'sí'})
		obraPremiadaEnlazada2 = p.enlazar(enlaceObraPremiada2, etiquetaObraPremiada2, idEntidadObraPremiada2, {['enlace'] =  'sí'})		
		
		obraPremiadaEnlazada  = (obraPremiadaEnlazada1 and obraPremiadaEnlazada2 and (obraPremiadaEnlazada1 .. ' / ' .. obraPremiadaEnlazada2)) or
			obraPremiadaEnlazada1	or
			obraPremiadaEnlazada2
	end
	
	decadaFormateada = ''
	
	if calendata then
		decada = tostring(calendata):sub(1,3)
		
		if decada ~= decadaAnterior then
			decadaAnterior = decada
			decadaFormateada = "</ul>'''" .. calendata .. "-" .. decada .. "9'''\n<ul><li>"
		end
	end

	return decadaFormateada .. 
		(obraPremiadaEnlazada and ("''" .. obraPremiadaEnlazada .. "''") or '') .. 
		(obraPremiadaEnlazada and personaEnlazada and ' de ' or '') .. 
		personaEnlazada .. 
		(calendata and ' (' .. calendata .. ')' or '')
			
end

function p.formatoPersonaPremiadaPor2(valor, opcions, frame, calificativos)
	local enlacePersona, etiquetaPersona, idEntidadPersona = p.obtenerDatos(valor)
	local personaEnlazada =  p.enlazar(enlacePersona, etiquetaPersona, idEntidadPersona, {['enlace'] =  'sí'})
	local calendata, decada, decadaFormateada
	local enlaceObraPremiada1, etiquetaObraPremiada1, idEntidadObraPremiada1, obraPremiadaEnlazada1
	local enlaceObraPremiada2, etiquetaObraPremiada2, idEntidadObraPremiada2, obraPremiadaEnlazada2
	local obraPremiadaEnlazada
	local opcionsCalendata= {['formatoTexto']='mayúscla', ['formatoCalendata'] = 'anyo', ['enlace']='no'}
	
	if calificativos then
		calendata = formatoDatoWikidata(elementoTabla(calificativos,'P585',1), opcionsCalendata , {}) -- Primera calendata
		
		enlaceObraPremiada1, etiquetaObraPremiada1, idEntidadObraPremiada1 = p.obtenerDatos(elementoTabla(calificativos,'P1686',1,'datavalue','value'))-- Premiado por
		enlaceObraPremiada2, etiquetaObraPremiada2, idEntidadObraPremiada2 = p.obtenerDatos(elementoTabla(calificativos,'P1686',2,'datavalue','value'))-- Premiado por		
		obraPremiadaEnlazada1 = p.enlazar(enlaceObraPremiada1, etiquetaObraPremiada1, idEntidadObraPremiada1, {['enlace'] =  'sí'})
		obraPremiadaEnlazada2 = p.enlazar(enlaceObraPremiada2, etiquetaObraPremiada2, idEntidadObraPremiada2, {['enlace'] =  'sí'})		
		
		obraPremiadaEnlazada  = (obraPremiadaEnlazada1 and obraPremiadaEnlazada2 and (obraPremiadaEnlazada1 .. ' / ' .. obraPremiadaEnlazada2)) or
			obraPremiadaEnlazada1	or
			obraPremiadaEnlazada2
	end	
	return '<td>' .. calendata .. 
		'</td><td>' .. (obraPremiadaEnlazada and ("''" .. obraPremiadaEnlazada .. "''") or '') .. 
		'</td><td>' .. (personaEnlazada or '') .. '</td>'
end

--*****************************************************************************
-- Funcions pa os tipos de dato URL
--*****************************************************************************

function p.formatoURL(valor, opcions, marco)
	return enlazarURL(valor)
end

function p.formatoTwitter(valor, opcions, marco)
	return '[https://twitter.com/' .. valor .. ' ' .. valor .. ']'
end

function p.formatoFacebook(valor, opcions, marco)
	return '[https://www.facebook.com/' .. valor .. ' ' .. valor .. ']'
end

--*****************************************************************************
-- Alias de formatos pa utilizar en la plantilla propiedat
--*****************************************************************************
p['bandera']     = p['formatoBandera']
p['cargo']       = p['formatoCargo']
p['chentilicio']  = p['formatoChentilicio']
p['personaPremiadaPor'] = p['formatoPersonaPremiadaPor']
--p['premio']      = p['formatoPremio']

p['facebook']  = p['formatoFacebook']
p['twitter']   = p['formatoTwitter']
p['url']       = p['formatoURL']
	
return p