Ir al contenido

Diferencia entre revisiones de «Módulo:Clasificaciónvj»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
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{{{['valor'] = datos[1], ['descriptor'] = datos[1] .. '_descriptor' or '', ['elementos'] = datos[1] .. '_elementos' or ''}},{propiedad, datos[3]}}
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['valor']
Clasificador = v
if datos[4][Clasificador] then
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>')
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
table.insert(Salida, '<div style="display:table-cell;">[[Archivo:' .. datos[4][Clasificador][1] .. '|' .. Descripcion .. '|25x30px|link=]]</div>')
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
Valor = require('Módulo:Tablas').elemento(v, 'mainsnak', 'datavalue', 'value', 'id')
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 a p.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ón Módulo:Formato texto.enVariasLineas(), modificado para satisfacer las listas con estilo CSS en tablas (table, table-row y table-cell).
  • obtenerClasif() función envoltura para Mó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