Diferencia entre revisiones de «Módulo:Clasificaciónvj»
mSin resumen de edición |
m Volviendo a la lógica de obtener solo el valor del clasificador de contenido. |
||
Línea 30: | Línea 30: | ||
if not datos then datos = {} end |
if not datos then datos = {} end |
||
local Valor = |
local Valor = |
||
argumentos{ |
argumentos{datos[1], {propiedad, datos[3]}} |
||
if Valor == {} or Valor == nil then return '' end |
if Valor == {} or Valor == nil then return '' end |
||
Línea 38: | Línea 38: | ||
table.insert(Salida, '<div style="display:table-row">') |
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>') |
table.insert(Salida, '<div style="display:table-cell;font-weight:bold;padding-right:0.2em">[[' .. datos[2] .. '|' .. datos[1] .. ']]</div>') |
||
local Clasificador |
|||
local Etiqueta |
|||
local Descriptor |
|||
local Elementos |
|||
local Descripcion |
|||
for k, v in pairs(Valor) do |
for k, v in pairs(Valor) do |
||
Clasificador = v |
Clasificador = v |
||
if datos[4][Clasificador] then |
if datos[4][Clasificador] then |
||
⚫ | |||
Descriptor = v['descriptor'] |
|||
Elementos = v['elementos'] |
|||
Descripcion = (function() |
|||
local Salida = {} |
|||
table.insert(Salida, datos[4][Clasificador][2]) |
|||
--if Descriptor then table.insert(Salida, Descriptor) end |
|||
--if Elementos then table.insert(Salida, Elementos) end |
|||
return table.concat(Salida, '; ') |
|||
end)() |
|||
if datos[4][Clasificador][1] and datos[4][Clasificador][2] then |
|||
⚫ | |||
end |
|||
else |
else |
||
table.insert(Salida, '<div style="display:table-cell;">' .. Clasificador .. '</div>') |
table.insert(Salida, '<div style="display:table-cell;">' .. Clasificador .. '</div>') |
||
Línea 72: | Línea 56: | ||
local Obj = require('Módulo:Tablas').elemento(Entidad, 'claims', idPropiedad) |
local Obj = require('Módulo:Tablas').elemento(Entidad, 'claims', idPropiedad) |
||
if Obj then |
if Obj then |
||
local Valor |
|||
local Plataforma |
|||
local Descriptor |
|||
local Elementos |
|||
for k, v in pairs(Obj) do |
for k, v in pairs(Obj) do |
||
table.insert(Salida, require('Módulo:Tablas').elemento(v, 'mainsnak', 'datavalue', 'value', 'id')) |
|||
Descriptor = require('Módulo:Tablas').elemento(v, 'qualifiers', 'P7367', 1, 'datavalue', 'value', 'id') |
|||
Elementos = require('Módulo:Tablas').elemento(v, 'qualifiers', 'P8428', 1, 'datavalue', 'value', 'id') |
|||
table.insert(Salida, {['valor'] = Valor, ['descriptor'] = Descriptor, ['elementos'] = Elementos}) |
|||
end |
end |
||
end |
end |
Revisión del 19:22 18 ago 2021
Esta documentación explica el funcionamiento del módulo en un contexto técnico. Para instrucciones sobre el uso de la plantilla asociada, véase la documentación de la misma en {{Clasificaciónvj}}
.
Este módulo implementa la plantilla {{Clasificaciónvj}}
. Su propósito es obtener las clasificasciones de contenido tanto desde parámetros locales como desde Wikidata, así como también facilitar la ampliación de la lista de clasificaciones a través de un módulo separado (además der hacer el módulo principal más eficiente).
Funciones
p.clasificacionvj()
, la función pública destinada obtener los parámetros desde la plantilla y pasarlos ap.main()
.p.main()
, la función destinada a ser usada (o importada) en este u otros módulos. Analiza los parámetros y los formatea a través de las siguientes funciones.evaluar()
la función para concatetar el valor-imagen y establecer el formato.enVariasLineas()
copia de la funciónMódulo:Formato texto.enVariasLineas()
, modificado para satisfacer las listas con estilo CSS en tablas (table
,table-row
ytable-cell
).obtenerClasif()
función envoltura paraMódulo:Tablas.elemento()
, para obtener el valor de la propiedades de clasificaciones.
Agregar clasificaciones
Véase la documentación de Módulo:Clasificaciónvj/datos.
Notas
- Datos adicionales
Se había considerado agregar descriptor de contenido (P7367) y elementos interactivos (P8428) dentro de los valores de clasificación de contenido, por ejemplo:
Luego de debatirlo en el IRC, se decidió prescindir de dichas propiedades, por lo que solo se mostrará la clasificación.
- Cantidad de valores por cada descriptor
Hay casos en los que se puede llegar a haber más de un valor (almacenado en Wikidata), dependiendo de las clasificaciones asignadas a lo largo de la historia. Los íconos de descripciones se mostrarán uno al lado del otro, pero no se proveerá más información; se está debatiendo si es pertinente obtenerlo (un ejemplo)
local p = {}
local Entidad -- Tabla con los datos en Wikidata del libro.
local ModuloArgumentos = require('Módulo:Argumentos')
local Datos = mw.loadData('Módulo:Clasificaciónvj/datos')
local argumentos = ModuloArgumentos.obtenerValorDeArgumentos
-- Función pública para ser llamada desde la plantilla {{clasificaciónvj}}
function p.clasificacionvj(frame)
ModuloArgumentos.obtenerTablaDeArgumentos(frame)
Entidad = mw.wikibase.getEntity(argumentos{'id'}) or {}
return p.main()
end
-- Función pública para ser incluída dentro de otros módulos
function p.main()
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 =
argumentos{datos[1], {propiedad, datos[3]}}
if Valor == {} or Valor == nil then return '' end
return (function()
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>')
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)()
end
function propiedad(idPropiedad)
if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
local Salida = {}
local Obj = require('Módulo:Tablas').elemento(Entidad, 'claims', idPropiedad)
if Obj then
for k, v in pairs(Obj) do
table.insert(Salida, require('Módulo:Tablas').elemento(v, 'mainsnak', 'datavalue', 'value', 'id'))
end
end
return Salida
end
end
return p