Ir al contenido

Módulo:Clasificaciónvj

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 19:22 18 ago 2021 por Amitie 10g (discusión · contribs.). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.

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