Módulo:Wikidata/unidades/datos

De borradopedia
Ir a la navegación Ir a la búsqueda

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:

--  Entidad     Texto
    ['Q8805'] = '[[Bit|b]]',

Uso

main()

Para integrar la funcionalidad en otros módulos, se puede seguir el siguiente código de ejemplo:

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

Parámetros

  • |val= el identificador de unidad de Wikidata.

numeroUnidad()

Se provee la función auxiliar numeroUnidad() como una forma conveniente de concatenar el número con su unidad disponible.

local numeroUnidad	= require('Módulo:Wikidata/unidades').numeroUnidad
...
local Edad = numeroUnidad(elementoTabla(Entidad, 'claims', 'P6249', 1, 'mainsnak', 'datavalue'))

Parámetros

  • |objeto=, el objeto datavalue
  • |opciones=, una tabla de opciones, usualmente pasada mediante la función propiedad() presente en varios módulos. Las opciones aceptadas son:
  • |opciones['izquierda']= permite colocar la unidad a la izquerda. Por defecto, este va a la derecha.
  • |opciones['separador']= especificar un separador alternativo (por defecto un espacio duro  ).

numeroUnidad() acepta como parámetro el objeto datavalue. Si el tipo de dato es amount, y se ha especificado una unidad válida, dicha unidad será concatenada de acuerdo a los parámetros |opciones['izquierda']= y |opciones['separador']=.

Función envoltura propiedad()

La siguiente función envoltura provee una fácil integración de este módulo en módulos de fichas.

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

¿Por qué los datos en un módulo separado?

Véase la función loadData() 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.


Error de secuencia de órdenes: Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129".

return {
	-- Porcentaje
	['Q11229']	= '%',
	
	-- Tamaños en bits
	['Q8805']	= '[[Bit|b]]',

	['Q3194304']= '[[Kilobit|kb]]',
	['Q3332814']= '[[Megabit|mb]]',
	['Q3105497']= '[[Gigabit|gb]]',
	['Q1152323']= '[[Terabit|tb]]',
	['Q1152074']= '[[Petabit|pb]]',
	['Q1195111']= '[[Exabit|eb]]',
	['Q1140444']= '[[Zettabit|zb]]',
	['Q1140577']= '[[Yottabit|yb]]',
	
	['Q3194304']= '[[Kibibit|Kib]]',
	['Q3332814']= '[[Mebibit|Mib]]',
	['Q3105497']= '[[Gibibit|Gib]]',
	['Q1152323']= '[[Tebibit|Tib]]',
	['Q1152074']= '[[Pebibit|Pib]]',
	['Q1195111']= '[[Exbibit|Eib]]',
	['Q1140444']= '[[Zebibit|Zib]]',
	['Q1140577']= '[[Yobibit|Yib]]',

	-- Tamaños en bytes
	['Q8799']	= '[[Byte|B]]',
	
	['Q79726']	= '[[Kilobyte|KB]]',
	['Q79735']	= '[[Megabyte|MB]]',
	['Q79738']	= '[[Gigabyte|GB]]',
	['Q79741']	= '[[Terabyte|TB]]',
	['Q79744']	= '[[Petabyte|PB]]',
	['Q79745']	= '[[Exabyte|EB]]',
	['Q79747']	= '[[Zettabyte|ZB]]',
	['Q79752']	= '[[Yottabyte|YB]]',

	['Q79756']	= '[[Kibibyte|KiB]]',
	['Q79758']	= '[[Mebibyte|MiB]]',
	['Q79765']	= '[[Gibibyte|GiB]]',
	['Q79769']	= '[[Tebibyte|TiB]]',
	['Q79774']	= '[[Pebibyte|PiB]]',
	['Q79777']	= '[[Exbibyte|EiB]]',
	['Q79779']	= '[[Zebibyte|ZiB]]',
	['Q79781']	= '[[Yobibyte|YiB]]',

	-- Velocidad de transferencia de datos
	['Q549389']		= 'bit/s',
	['Q2269250']	= 'Kbit/s',
	['Q7350781']	= 'Mbit/s',
	['Q2243141']	= 'Gbit/s',
	['Q12265780']	= 'Pbit/s',
	['Q12257695']	= 'Ebit/s',
	['Q12269308']	= 'Zbit/s',
	['Q12269121']	= 'Ybit/s',

	-- Frecuencias en hercios
	['Q39369']		= '[[Hercio|Hz]]',
	['Q2143992']	= '[[Hercio|KHz]]',
	['Q732707']		= '[[Hercio|MHz]]',
	['Q3276763']	= '[[Hercio|GHz]]',
	['Q13548586']	= '[[Hercio|THz]]',
		
	-- Rendimiento en flops
	['Q39369']		= '[[Operaciones de coma flotante por segundo|FLOPS]]',
	['Q78053467']	= '[[Operaciones de coma flotante por segundo|kiloFLOS]]',
	['Q66778809']	= '[[Operaciones de coma flotante por segundo|megaFLOS]]',
	['Q5558595']	= '[[Operaciones de coma flotante por segundo|gigaFLOS]]',
	['Q66778234']	= '[[Operaciones de coma flotante por segundo|teraFLOS]]',
	['Q66778863']	= '[[Operaciones de coma flotante por segundo|petaFLOS]]',
	['Q66778905']	= '[[Operaciones de coma flotante por segundo|exaFLOS]]',

	-- Velocidad
	['Q182429']		= '[[Metro por segundo|m/s]]',
	['Q748716'] 	= '[[Pie por segundo|p/s]]',
	['Q180154'] 	= '[[Kilómetro por hora|Km/h]]',
	['Q211256'] 	= '[[Milla por hora|Mph]]',
	['Q128822'] 	= '[[Nudo (unidad)|kn]]',
	['Q531']		= '[[años luz]]',

	-- Masa
	['Q11570']		= '[[Kilogramo|kg]]',
	['Q41803']		= '[[Gramo|g]]',
	['Q48013']		= '[[Onza|oz]]',
	['Q100995']		= '[[Libra|lb]]',
	['Q191118']	 	= '[[Tonelada|ton]]',
	['Q3241121']	= '[[Miligramo|mg]]',
	
	-- Longitud
	['Q11573']		= '[[Metro|m]]',
	['Q828224']		= '[[Kilómetro|km]]',

	['Q200323']		= '[[Decímetro|dm]]',
	['Q174728']		= '[[Centímetro|cm]]',
	['Q174789']		= '[[Milímetro|mm]]',
	['Q175821']		= '[[Micrómetro|µm]]',
	['Q178674']		= '[[Nanómetro|nm]]',
	['Q192274']		= '[[Picómetro|pm]]',
	['Q208788']		= '[[Femtómetro|fm]]',
	['Q6003257']	= '[[Attómetro|atm]]',
	['Q3270676']	= '[[Zeptómetro|zm]]',
	['Q3221356']	= '[[Yoctómetro|ym]]',

	['Q531']		= '[[años luz]]',

	['Q218593']		= '[[Pulgada|in]]',
	['Q3710']		= '[[Pie|ft]]',
	['Q482798']		= '[[Yarda|yd]]',
	['Q6502423']	= '[[Braza (unidad)|bz]]',
	['Q552299']		= '[[Cadena (unidad de longitud)|ch]]',
	['Q494083']		= '[[Furlong|fur]]',
	['Q253276']		= '[[Milla|mi]]',
	['Q93318']		= '[[Milla naútica|nmi]]',

	-- Superficie
	['Q25343']		= 'm²',
	['Q1063786']	= 'in²',
	['Q2489298']	= 'cm²',
	['Q2737347']	= 'mm²',
	
	['Q23931040']	= 'dam²',
	['Q35852']		= 'ha',
	['Q712226']		= 'km²',
	
	['Q81292']		= '[[acre]]',
	
	['Q251545']		= '[[Yugarda|yu]]',
	['Q1550511']	= '[[Yarda cuadrada|yd²]]',
	['Q717310']		= '[[Morgen|Mg]]',
	['Q17094697']	= '[[Łan]]',
	['Q3774562']	= '[[homestead]]',

	-- Volumen
	['Q25517']		= 'm³',
	['Q1022113']	= 'cm³',
	['Q1545979']	= 'ft³',
	['Q2140397']	= 'in³',
	['Q2175964']	= 'dm³',
	['Q3675550']	= 'mm³',

	-- Unidades de potencia eléctrica
	['Q25236']		= '[[Vatio|W]]',
	['Q3320608']	= '[[Vatio|kW]]',
	['Q6982035']	= '[[Vatio|MW]]',
	['Q5879479']	= '[[Vatio|GW]]',
	['Q23823681']	= '[[Vatio|TW]]',
	['Q53449040']	= '[[Vatio|PW]]',  
	['Q53449045']	= '[[Vatio|EW]]',
	
	['Q53449029']	= '[[Vatio|dW]]',
	['Q53449025']	= '[[Vatio|cW]]',
	['Q3207456']	= '[[Vatio|mW]]',
	['Q1823150']	= '[[Vatio|mW]]',
	['Q1823150']	= '[[Vatio|µW]]',
	['Q53449021']	= '[[Vatio|nW]]',
	['Q53449018']	= '[[Vatio|pW]]',
	['Q53449013']	= '[[Vatio|fW]]',
	
	['Q25236']		= '[[Voltiamperio|VA]]',
	['Q29924639']	= '[[Voltiamperio|kVA]]',
	
	['Q630369']		= '[[Voltiamperio reactivo|VAR]]',

	-- Tensión
	['Q25250']		= '[[Voltio|V]]',

	-- SAR
	['Q67060736']	= 'W/kg',
	
	-- Genética
	['Q145911']		= '[[par de bases]]',
	['Q12321814']	= '[[Par de bases|kilobases]]',
	['Q25376902'] 	= '[[Par de bases|megabases]]',
	
	-- Unidades de concentración
	['Q483261'] 	= '[[Unidad de masa atómica|u]]',
	['Q21077820']	= 'mg/cm³',
	['Q13147228']	= 'g/cm³',
	['Q844211'] 	= '[[Kilogramo por metro cúbico|kg/m³]]',
	
	-- Unidades de capacidad calorífica
	['Q20966455']	= '[[Julio (unidad)|J]]/([[Kelvin|K]]·[[mol]])',
	['Q3085309']	= '[[Julio (unidad)|J]]/([[Kelvin|K]]·[[Kilogramo|kg]])',
	
	-- Unidades de presión
	['Q44395']		= '[[Pascal (unidad)|Pa]]',
	['Q53448918']	= '[[Pascal (unidad)|daPa]]',
	['Q5139563']	= '[[Pascal (unidad)|hPa]]',
	['Q21064807']	= '[[Pascal (unidad)|kPa]]',
	['Q21062777']	= '[[Pascal (unidad)|MPa]]',
	['Q53448922']	= '[[Pascal (unidad)|GPa]]',
	['Q53448927']	= '[[Pascal (unidad)|TPa]]',
	['Q53448931']	= '[[Pascal (unidad)|PPa]]',
	['Q53448914']	= '[[Pascal (unidad)|dPa]]',
	['Q53448909']	= '[[Pascal (unidad)|cPa]]',
	['Q53448906']	= '[[Pascal (unidad)|mPa]]',
	['Q53448900']	= '[[Pascal (unidad)|µPa]]',
	['Q53448897']	= '[[Pascal (unidad)|nPa]]',
	['Q53448892']	= '[[Pascal (unidad)|pPa]]',

	['Q6859652']	= '[[Milímetro de mercurio|mmHg]]',
	['Q1050958']	= '[[Pulgada de mercurio|inHg]]',
	['Q185648']		= '[[torr]]',

	['Q177974']		= '[[Atmósfera (unidad)|Atm]]',
	['Q909066']		= '[[Atmósfera técnica|At]]',
	
	['Q103510']		= '[[Bar (unidad de presión)|bar]]',
	['Q3495543']	= '[[Milibar|mbar]]',
	['Q809678']		= '[[Baria|Ba]]',
	
	['Q626299']		= '[[Libra por pulgada cuadrada|psi]]',

	['Q2042279']	= '[[Metro de columna de agua|m/ca]]',
	['Q1247300']	= '[[Centímetro de columna de agua|cm/ca]]',
	['Q13479685']	= '[[Milímetro de columna de agua|mm/ca]]',
	['Q752197']		= '[[kilojulio por mol|kJ/mol]]',
	['Q20966435']	= 'A/Vm',
	['Q1463969']	= '[[Vatio por metro-kelvin|W/(m·K)]]',
	['Q3085309']	= '[[Julio por kilogramo-kelvin|J/(K⁻¹·kg⁻¹)]]',
	
	-- Unidades de potencia
	['Q2276380']	= '[[Caballo de fuerza|HP]]',
	['Q160857']		= '[[Caballo de vapor|CV]]',
	
	-- Edad
	['Q73432913']	= 'día',
	['Q73432674']	= 'mes',
	['Q24564698']	= 'año',
	['Q73433037']	= 'década',
	
	['Q73432913-plural']	= 'días',
	['Q73432674-plural']	= 'meses',
	['Q24564698-plural']	= 'años',
	['Q73433037-plural']	= 'décadas',

	['Q20764']				= '[[Millones de años|Ma]]',
	
		-- Precios en moneda
	['Q4917']		= '[[Dólar estadounidense|US$]]',
	['Q1104069']	= '[[Dólar canadiense|C$]]',
	['Q4916']		= '[[Euro|€]]',
	['Q4916']		= '[[Libra esterlina|£]]',
	['Q8146']		= '[[Yen|¥]]',
	['Q39099']		= '[[Renminbi|¥]]',
	['Q202040']		= '[[Won surcoreano|₩]]',
	['Q106720']		= '[[Won norcoreano|₩]]',
	['Q15788']		= '[[Rublo|₽]]',
	['Q259502']		= '[[Dólar australiano|A$]]',
	['Q1472704']	= '[[Dólar neozelandés|NZ$]]',
	['Q4730']		= '[[Peso mexicano|$]]',
	['Q204656']		= '[[Sol (moneda del Perú)|S/]]',
	['Q199578']		= '[[Peso (moneda de Argentina)|$]]',
	['Q200050']		= '[[Peso (moneda de Chile)|$]]',
	['Q173117']		= '[[Real brasileño|R$]]',

	-- Precios en criptodivisa
	['Q131723']		= '[[Bitcoin|฿]]',
	['Q100286778']	= '[[Bitcoin|mBTC]]',
	['Q100286875']	= '[[Bitcoin|satoshi]]',
	['Q4043030']	= '[[Litecoin|Ł]]',
	['Q19893485']	= '[[Monero (criptomoneda)|ɱ]]',
}