Módulo:Wikidata/unidades/doc
Esta es la página de documentación de Módulo:Wikidata/unidades
Este módulo implementa desde cero una forma de obtener las unidades, en base a la entidad de Wikidata asociada a dicha unidad. Toda actualización debe hacerse en Módulo:Wikidata/unidades/datos, siguiendo este formato:
<syntaxhighlight lang="lua"> -- Entidad Texto
['Q8805'] = 'b',
</syntaxhighlight>
Uso
Plantilla:Code
Para integrar la funcionalidad en otros módulos, se puede seguir el siguiente código de ejemplo: <syntaxhighlight lang="lua"> local getUnit = require('Módulo:Wikidata/unidades').main local elementoTabla = require('Módulo:Tablas').elemento
local Dato = elementoTabla(Entidad, 'claims', idPropiedad, 'mainsnak', 'datavalue') local Valor = elementoTabla(Dato, 'value') local Tipo = elementoTabla(Dato, 'type')
if Tipo == 'quantity' then
Unidad = elementoTabla(Valor, 'unit') Valor = string.sub(elementoTabla(Valor, 'amount'), 2) if Unidad then Valor = Valor .. getUnit(Unidad) end -- La posición y espaciado de la unidad depende del valor
end </syntaxhighlight>
Parámetros
- Plantilla:Param el identificador de unidad de Wikidata.
Plantilla:Code
Se provee la función auxiliar Plantilla:Code como una forma conveniente de concatenar el número con su unidad disponible. <syntaxhighlight lang="lua"> local numeroUnidad = require('Módulo:Wikidata/unidades').numeroUnidad ... local Edad = numeroUnidad(elementoTabla(Entidad, 'claims', 'P6249', 1, 'mainsnak', 'datavalue')) </syntaxhighlight>
Parámetros
- Plantilla:Param, el objeto Plantilla:Code
- Plantilla:Param, una tabla de opciones, usualmente pasada mediante la función propiedad() presente en varios módulos. Las opciones aceptadas son:
- Plantilla:Param permite colocar la unidad a la izquerda. Por defecto, este va a la derecha.
- Plantilla:Param especificar un separador alternativo (por defecto un espacio duro Plantilla:Code).
Plantilla:Code acepta como parámetro el objeto Plantilla:Code. Si el tipo de dato es Plantilla:Code, y se ha especificado una unidad válida, dicha unidad será concatenada de acuerdo a los parámetros Plantilla:Param y Plantilla:Param.
Función envoltura Plantilla:Code
La siguiente función envoltura provee una fácil integración de este módulo en módulos de fichas. <syntaxhighlight lang=lua> function propiedad(idPropiedad, opciones, entidad) if not entidad then entidad = Entidad end
if entidad and entidad.claims and entidad.claims[idPropiedad] then if not opciones then opciones = {['linkback']='sí'} end
-- Valores cuya unidad deba ir a la derecha, separada de un espacio if opciones['unidad'] then if elementoTabla(Entidad, 'claims', idPropiedad, 2, 'mainsnak', 'datavalue') then return formatoNumero(elementoTabla(Entidad, 'claims', idPropiedad, 1, 'mainsnak', 'datavalue', 'value', 'amount')) .. ' - ' .. numeroUnidad(elementoTabla(Entidad, 'claims', idPropiedad, 2, 'mainsnak', 'datavalue')) else return numeroUnidad(elementoTabla(Entidad, 'claims', idPropiedad, 1, 'mainsnak', 'datavalue')) end
-- Valores cuya unidad deba ir a la izquierda (ej, las monedas o divisas) elseif opciones['precio'] then if elementoTabla(Entidad, 'claims', idPropiedad, 2, 'mainsnak', 'datavalue') then return numeroUnidad(elementoTabla(Entidad, 'claims', idPropiedad, 1, 'mainsnak', 'datavalue'), false) .. ' - ' .. numeroUnidad(elementoTabla(Entidad, 'claims', idPropiedad, 2, 'mainsnak', 'datavalue'), false) else return numeroUnidad(elementoTabla(Entidad, 'claims', idPropiedad, 1, 'mainsnak', 'datavalue'), false) end end
opciones.entityId = entidad.id opciones.propiedad = idPropiedad return ModuloWikidata.getPropiedad(opciones,entidad.claims[idPropiedad]) end end </syntaxhighlight>
¿Por qué los datos en un módulo separado?
Véase la función [[mw:Extension:Scribunto/Lua_reference_manual/es#mw.loadData|Plantilla:Code]] de la extensión Scribunto para más información.
¿Qué hay de los módulos auxiliares de Módulo:Wikidata?
Este módulo no pretende ser un reemplazo para los módulos auxiliares de formato del Módulo:Wikidata, sino que una alternativa para ser usada en módulos con un nuevo código, mucho más limpio. Aunque, tarde o temprano, este código terminará integrándose dentro del módulo principal.