Módulo:Enlace externo

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

local p = {}
local ModuloArgumentos = require('Módulo:Arguments')
local ModuloWikidata = require('Module:Wikidata')
local ModuloPaginas = require('Módulo:Páginas')
local argumentos
local Entidad

function p.Plantilla(frame)
	argumentos = ModuloArgumentos.getArgs(frame, { trim = true })
	Entidad = mw.wikibase.getEntityObject(argumentos.id) or mw.wikibase.getEntityObject(argumentos.entidad) or {}
	local Titulo = argumentos['título'] or argumentos['titulo'] or obtenerEtiquetaWikidata() or ModuloPaginas.nombrePagina({desambiguar='sí'})
	local Imagen
	if not argumentos['imagen'] or argumentos['imagen'] == 'no' or argumentos['imagen'] == '' then
		Imagen = ''
	elseif argumentos['imagen'] == 'sí' or argumentos['imagen'] == 'defecto' then
		Imagen = '[[File:Internet-web-browser.svg|16px|link=|alt=Icono]] '
	elseif argumentos['imagen'] then
		Imagen = '[[File:' .. argumentos['imagen'] .. '|16px|link=|alt=Icono]] '
	end
	local Nombre
	if argumentos['nombre'] and argumentos['enlacenombre'] then
		Nombre = ' en [[' .. frame:preprocess('{{desenlazar|' .. argumentos['enlacenombre'] .. '}}') .. '|' .. frame:preprocess('{{desenlazar|' .. argumentos['nombre'] .. '}}') ..']]'
	elseif argumentos['nombre'] then
		Nombre = ' en ' .. argumentos['nombre']
	else
		Nombre = ''
	end
	-- Definición de URL
	local URL
	local Patron = argumentos['patrón'] or argumentos['patron']
	local Propiedad = argumentos['propiedad']
	local Id = argumentos['identificador']
	local Nota = argumentos['nota']
	if Nota then
		Nota = ' (' .. Nota .. ')'
	else
		Nota = ''
	end
	if Patron then
		URL = Patron
	elseif Propiedad then
		local EntidadPropiedad = mw.wikibase.getEntityObject(Propiedad) or {}
		local PatronWikidata = EntidadPropiedad.claims.P1630[1].mainsnak.datavalue.value
		if PatronWikidata then
			URL = PatronWikidata
		else
			return '<span class="error">Error: sin patrón en la propiedad de Wikidata ' .. Propiedad .. '.</span>'
		end
	else
		return '<span class="error">Error: debe pasar una propiedad o un patrón como parámetro.</span>'
	end
	if Id then
		URL = mw.ustring.gsub(URL, '%$1', Id)
	elseif Propiedad then
		local IdWikidata = propiedad(Propiedad, {['linkback']='no', ['uno']='sí'}) or ''
		if IdWikidata and IdWikidata ~= '' then
			URL = mw.ustring.gsub(URL, '%$1', IdWikidata)
		else
			return '<span class="error">Error: sin identificador en la propiedad de Wikidata ' .. Propiedad .. '.</span>'
		end
	else
		return '<span class="error">Error: debe pasar al menos un identificador o una propiedad como parámetro junto al patrón.</span>'
	end
	local Prefijo = argumentos['prefijo'] or ''
	if Prefijo ~= '' then
		Prefijo = Prefijo .. ' '
	end
	local Sufijo = argumentos['sufijo'] or ''
	if Sufijo ~= '' then
		Sufijo = ' ' .. Sufijo
	end
	return Imagen .. Prefijo .. '['.. URL .. ' ' .. Titulo .. ']' .. Sufijo .. Nombre .. Nota
end

function obtenerEtiquetaWikidata()
	if Entidad and Entidad.labels and Entidad.labels.es then
		return Entidad.labels.es.value
	end
end

function propiedad(idPropiedad,opciones)
	if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
		if not opciones then
			opciones = {['linkback']='sí'}
		end
		opciones.entityId  = Entidad.id
		opciones.propiedad = idPropiedad
		valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
		return valorPropiedad
	end
end

return p