Módulo:Wikidata/Formato magnitut

La documentación para este módulo puede ser creada en Módulo:Wikidata/Formato magnitut/doc

local p = {}

function p.formatoMagnitut(valor, opcions)
	if not valor or not valor.amount then
		return
	end
	
	local idUnidat = valor.unit:gsub('^.-/(Q%d+)$', '%1')
	local cantidat = tonumber(valor.amount:gsub('+','') or '')
	
	if not cantidat then
		return
	end
	
	return require('Módulo:Convertir').amostrarValor(cantidat, idUnidat, opcions)
end

function p.formatoPeriodicidad(valor, opcions, marco)
	local resultau
  	--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 
  			resultau = 'mensual'
  		elseif valor.amount == '+2' then 
  			resultau = 'bimestral'
  		elseif valor.amount == '+3' then 
  			resultau = 'trimestral'
  		elseif valor.amount == '+4' then 
  			resultau = 'quatrimestral'
  		elseif valor.amount == '+6' then 
  			resultau = 'semestral'
  		else
  			resultau = 'cada ' .. sinSigno(valor.amount) .. ' meses'
  		end
  	elseif valor.unit == 'http://www.wikidata.org/entity/Q23387' then
  		if valor.amount == '+1' then 
  			resultau = 'semanal'
  		elseif valor.amount == '+2' then 
  			resultau = 'quincenal'
  		else
  			resultau = 'cada ' .. sinSigno(valor.amount) .. ' semanas'
  		end
	elseif valor.unit == 'http://www.wikidata.org/entity/Q577' then
		if valor.amount == '+1' then 
  			resultau = 'anual'		
  		else
  			resultau = 'cada ' .. sinSigno(valor.amount) .. ' anyos'
  		end  			
	elseif valor.unit == 'http://www.wikidata.org/entity/Q573' then
		if valor.amount == '+1' then 
  			resultau = 'diaria'		
  		else
  			resultau = 'cada ' .. sinSigno(valor.amount) .. ' días'
  		end  					
	elseif valor.unit == 'http://www.wikidata.org/entity/Q3955006' then
		if valor.amount == '+1' then 
  			resultau = 'semestral'		
  		else
  			resultau = 'cada ' .. sinSigno(valor.amount) .. ' semestres'
  		end  				  		
	else 
		if valor.amount == '+1' then 
			resultau = 'cada ' .. valor.unit
		else
			resultau = 'cada ' .. sinSigno(valor.amount) .. ' ' .. valor.unit
		end
	end

	if resultau and opcions and opcions['mayúscla'] == 'sí' then
		return mw.language.new('an'):ucfirst(resultau)
	else
		return resultau
	end
end

-- Alias pa simplificar l'uso dende a plantilla propiedat, por eixemplo:
--  {{Propiedad|P2048)|tipo de dato=altaria}}
--
p['altaria'] 		= p.formatoMagnitut
p['aria']			= p.formatoMagnitut
p['magnitut']		= p.formatoMagnitut
p['periodicidat']	= p.formatoPeriodicidad

return p