Módulo:Enlace externo
Apariencia
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