Módulo:Clasificaciónvj
Ir a la navegación
Ir a la búsqueda
La documentación para este módulo puede ser creada en Módulo:Clasificaciónvj/doc
local p = {}
local Entidad -- Tabla con los datos en Wikidata del libro.
local ModuloArgumentos = require('Módulo:Argumentos')
local argumentos = ModuloArgumentos.obtenerValorDeArgumentos
local Datos = mw.loadData('Módulo:Clasificaciónvj/datos')
-- Función pública para ser llamada desde la plantilla {{clasificaciónvj}}
function p.clasificacionvj(frame)
ModuloArgumentos.obtenerTablaDeArgumentos(frame)
Entidad = mw.wikibase.getEntity(argumentos{'entidad', 'id'}) or {}
return p.main()
end
-- Función pública para ser incluída dentro de otros módulos
function p.main(entidad)
if not Entidad then Entidad = entidad end
local Salida = {}
for k, v in pairs(Datos) do
if v then table.insert(Salida, evaluar(v)) end
end
local resultado
local copia={}
require('Módulo:Tablas').insertarElementosConValor(Salida, copia)
if copia[1] then
return '<div style="display:table">' .. table.concat(copia) .. '</div>'
end
end
function evaluar(datos)
if not datos then datos = {} end
local Valor = (function()
local Valor = argumentos{datos[1], {obtenerClasif, datos[3]}} or {}
if type(Valor) == 'string' then Valor = {Valor} end
return Valor
end)()
if #Valor == 0 then return '' end
local Salida = {}
table.insert(Salida, '<div style="display:table-row">')
table.insert(Salida, '<div style="display:table-cell;font-weight:bold;padding-right:0.2em">[[' .. datos[2] .. '|' .. datos[1] .. ']]</div>')
local Clasificador
for k, v in pairs(Valor) do
Clasificador = v
if datos[4][Clasificador] then
table.insert(Salida, '<div style="display:table-cell;">[[Archivo:' .. datos[4][Clasificador][1] .. '|' .. datos[4][Clasificador][2] .. '|25x30px|link=]]</div>')
else
table.insert(Salida, '<div style="display:table-cell;">' .. Clasificador .. '</div>')
end
end
table.insert(Salida, '</div>')
return table.concat(Salida)
end
function obtenerClasif(idPropiedad)
if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
local Salida = {}
local Obj = require('Módulo:Tablas').elemento(Entidad, 'claims', idPropiedad)
local Valor, Ultimo = ''
if Obj then
for k, v in pairs(Obj) do
Valor = require('Módulo:Tablas').elemento(v, 'mainsnak', 'datavalue', 'value', 'id')
if Valor == Ultimo then break end
Ultimo = Valor
table.insert(Salida, Valor)
end
end
return Salida
end
end
return p