Módulo:Wikidata/Formato magnitud

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

Uso

En este módulo se definen algunos de los tipos de datos de la plantilla {{propiedad}} o equivalentemente de las funciones permitidas para el parámetro valor-función del módulo:Wikidata.

magnitud

<section begin=Wikidata_magnitud_texto />

uso desde la plantilla propiedad
{{Propiedad|id. de la propiedad|tipo de dato=magnitud|parámetros opcionales}}
uso desde Lua
Ver el módulo ficha de persona.

Tipo de dato para propiedades de superficie («Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129". (P2046)») o de longitud («Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129". (P2048)», Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129". (P2929)). Se muestra el área o la longitud/altura . Se muestra la cantidad redondeada a dos decimales y a la derecha la abreviatura de la unidad convirtiendo en su caso al sistema internacional de unidades. Para ello se utiliza el módulo:convertir.

Los parámetros posibles son:

  • enlace: si toma el valor de "no" no se enlaza la unidad
  • precisión: número de decimales que se muestran tras la coma decimal. El valor por defecto es 2.

Para la lista de los parámetros posibles véase la plantilla {{propiedad}} o el módulo:Wikidata si se accede desde un módulo Lua.

Pueden verse ejemplos de utilización en la página de pruebas del módulo. <section end=Wikidata_magnitud_texto />

periodicidad

<section begin=Wikidata_periodicidad_texto />

uso desde la plantilla propiedad
{{Propiedad|id. de la propiedad|tipo de dato=magnitud|parámetros opcionales}}

Tipo de dato para la propiedad «Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129". (P2896)». Se muestra la periodicidad (anual, mensual, quincenal, semanal, etc). Los parámetros posibles son:

  • mayúscula. Si vale "sí" se muestra el primer carácter de la periodicidad en mayúsculas.

Pueden verse ejemplos de utilización en la página de pruebas del módulo. <section end=Wikidata_periodicidad_texto />


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

local p = {}

function p.formatoMagnitud(valor, opciones)
	if not valor or not valor.amount then
		return
	end
	
	local idUnidad = valor.unit:gsub('^.-/(Q%d+)$', '%1')
	local cantidad = tonumber(valor.amount:gsub('+','') or '')
	
	if not cantidad then
		return
	end
	
	return require('Módulo:convertir').mostrarValor(cantidad, idUnidad, opciones)
end

function p.formatoPeriodicidad(valor, opciones, marco)
	local resultado
  	--if true then return require('Módulo:Tablas').tostring(valor) end
  	
  	local function sinSigno(valor)
  		if valor and valor:sub(1,1) == '+' then
  			return valor:sub(2,valor:len())
  		else
  			return valor
  		end
  	end
  
	if valor.unit == 'http://www.wikidata.org/entity/Q5151' then
  		if valor.amount == '+1' then 
  			resultado = 'mensual'
  		elseif valor.amount == '+2' then 
  			resultado = 'bimestral'
  		elseif valor.amount == '+3' then 
  			resultado = 'trimestral'
  		elseif valor.amount == '+4' then 
  			resultado = 'cuatrimestral'
  		elseif valor.amount == '+6' then 
  			resultado = 'semestral'
  		else
  			resultado = 'cada ' .. sinSigno(valor.amount) .. ' meses'
  		end
  	elseif valor.unit == 'http://www.wikidata.org/entity/Q23387' then
  		if valor.amount == '+1' then 
  			resultado = 'semanal'
  		elseif valor.amount == '+2' then 
  			resultado = 'quincenal'
  		else
  			resultado = 'cada ' .. sinSigno(valor.amount) .. ' semanas'
  		end
	elseif valor.unit == 'http://www.wikidata.org/entity/Q577' then
		if valor.amount == '+1' then 
  			resultado = 'anual'		
  		else
  			resultado = 'cada ' .. sinSigno(valor.amount) .. ' años'
  		end  			
	elseif valor.unit == 'http://www.wikidata.org/entity/Q573' then
		if valor.amount == '+1' then 
  			resultado = 'diaria'		
  		else
  			resultado = 'cada ' .. sinSigno(valor.amount) .. ' días'
  		end  					
	elseif valor.unit == 'http://www.wikidata.org/entity/Q3955006' then
		if valor.amount == '+1' then 
  			resultado = 'semestral'		
  		else
  			resultado = 'cada ' .. sinSigno(valor.amount) .. ' semestres'
  		end  				  		
	else 
		if valor.amount == '+1' then 
			resultado = 'cada ' .. valor.unit
		else
			resultado = 'cada ' .. sinSigno(valor.amount) .. ' ' .. valor.unit
		end
	end

	if resultado and opciones and opciones['mayúscula'] == 'sí' then
		return mw.language.new('es'):ucfirst(resultado)
	else
		return resultado
	end
end

-- Alias para simplificar el uso desde la plantilla propiedad, por ejemplo:
--  {{Propiedad|P2048)|tipo de dato=altura}}
--
p['altura'] 		= p.formatoMagnitud
p['área']			= p.formatoMagnitud
p['magnitud']		= p.formatoMagnitud
p['periodicidad']	= p.formatoPeriodicidad

return p