Vés al contingut

Mòdul:Wikidades/Units

De la Viquipèdia, l'enciclopèdia lliure
Icona de documentació de mòdul Documentació del mòdul [ mostra ] [ modifica el codi ] [ mostra l'historial ] [ refresca ]

Mòdul Wikidades (codi · ús · discussió · proves · tests · casos prova | subpàgines · enllaços)

A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]


Mòdul auxiliar de configuració local per obtenir les unitats d'un valor numèric de Wikidata.

Taula wikidata_units

El format per a cada unitat és:

	Qid = {
		label = 'xxx',
		plural = 'xxx',
		ucode = 'xxx',
		},

La inclusió en aquesta taula és opcional:

  • Qid és l'identificador de la unitat a Wikidata, usat com a referència.
  • label és l'etiqueta de la unitat a Wikidata. S'obté automàticament de la consulta a Wikidata i s'inclou aquí si es vol un valor diferent en les infotaules, o bé en casos d'alta utilització per evitar canvis sobtats i massius deguts a una modificació a Wikidata, sigui vandàlica o no.
  • plural és el plural de l'etiqueta d'unitat, a utilitzar quan la quantitat sigui diferent d'1. Es genera automàticament a partir d'unes regles (vegeu Mòdul:ca-flexió) i només caldrà incloure'l en casos no regulars.
  • ucode és el codi o l'abreviatura de la unitat, a utilitzar en cas d'usar el paràmetre formatting=unitcode. Només caldrà afegir-lo quan el valor sigui diferent a l'obtingut a partir de Símbol de la unitat (P5061). Si no se'n troba cap traurà l'etiqueta.
Taula convert_default

Conversions d'unitats per defecte usades amb l'opció convert=default. El format és:

	Qid_from = 'Qid_to', -- comment

on Qid_from és l'identificador de la unitat a convertir i Qid_to és la unitat usada en la conversió. És recomanable explicar en un comentari de quines unitats es tracta per a una millor lectura. Vegeu la documentació dels paràmetres de formatació per a tipus de dada numèric.

-- syntax:
--	Qxxx = { -- label from Wikidata, as a reference
--		label = "label fixed",
--		plural = "plural fixed",
--		ucode = "unit code to add or to fix",
--		},

local wikidata_units = {
    Q531 = { -- any llum
		plural = "anys llum",
		},
	Q573 = { -- dia
		ucode = "dies",
		},
	Q4917 = { -- dòlar dels Estats Units
		ucode = "$", -- reiteratiu
		},
	Q5151 = { -- mes
		plural = "mesos",
		},
	Q11229 = { -- percentatge
		plural = "percentatge",
		ucode = "%", -- reiteratiu
		},
	Q11573 = { -- metre
		ucode = "m", -- reiteratiu
		},
	Q25267 = { -- grau Celsius
		plural = "graus Celsius",
		},
	Q42289 = { -- grau Fahrenheit
		plural = "graus Fahrenheit",
		},
    Q55627 = { -- anys de vida ajustats per discapacitat
		plural = "anys de vida ajustats per discapacitat",
		ucode = "AVAD",
		},
	Q83327 = { -- electró-volt
		plural = "electrons-volt",
		},
	Q155009 = { -- Reichsmark
		ucode = "ℛℳ",
		},
	Q206037 = { -- revolucions per minut
		label = "revolució",
		ucode = "RPM", -- WD: rev/min
		},
    Q209426 = { -- minut d'arc
		label = "minut",
		},
	Q483261 = { -- unitat de massa atòmica
		ucode = "uma", -- WD: u
		},
	Q524410 = { -- mil milions d'anys
		plural = "mil milions d'anys",
		},
	Q550207 = { -- dòlar Geary-Khamis
		plural = "dòlars Geary-Khamis",
		ucode = "$",
		},
	Q712226 = { -- quilòmetre quadrat
		ucode = "km²", -- reiteratiu
		},
	Q743895 = { -- pulsacions per minut
		plural = "pulsacions per minut",
		ucode = "ppm",
		},
	Q829073 = { -- segon d'arc
		label = "segon",
		ucode = "″", -- WD amb cometes rectes
		},
	Q1463969 = { -- watt per metre-kelvin
		ucode = "W/(m·K)", -- WD: W m⁻¹ K⁻¹
		},
	Q2080811 = { -- fracció volumètrica
		label = "percentatge en volum",
		plural = "percentatge en volum",
		ucode = "%", -- WD: vol%
		},
	Q3085309 = { -- joule per quilogram-kelvin
		ucode = "J/Kg·K", -- WD: J kg⁻¹ K⁻¹
		},
	Q6859652 = { -- mil·límetre de mercuri
		ucode = "mm Hg", -- WD: mmHg
		},
	Q20966435 = { -- amper per volt-metre
		plural = "amper per volt-metre",
		},
	Q20966455 = { -- joule per mol-kelvin
		ucode = "J/mol·K", -- WD: J K⁻¹ mol⁻¹
		},
	Q21127659 = { -- gram per 100 grams de dissolvent
		ucode = "g/100 g dissolvent",
		},
	Q23977060 = { -- decibel relatiu a 1 picaWatt
		ucode = "dB re 1pW", 
		},
	Q24564698 = { -- anys (d'edat)
		plural = "anys",
		},
	Q28739766 = { -- coulomb-metre
		ucode = "C·m", -- WD: C m
		},
	}

local function getUnit(amount, label, unitID, code, symbol)
	if label == nil then return unitID end
	local id_data = wikidata_units[unitID] or {}
	local unit_text = ''
	if code then
		unit_text = id_data.ucode or symbol or id_data.label or label
	elseif amount == "1" then
		unit_text = id_data.label or label or unitID
	else
		unit_text = id_data.plural or require("Module:ca-flexió").plural(id_data.label or label)
	end
	return unit_text
end

local convert_default = {
	Q218593 = "Q174789", -- in > mm
	Q3710 = "Q174728", -- ft > cm
	Q482798 = "Q11573", -- yd > m
	Q253276 = "Q828224", -- mi > km
	Q232291 = "Q712226", -- mi² > km²
	Q128822 = "Q180154", -- nus > km/h
}

-- fraction values are saved in Wikidata as decimal numbers, e.g. P6757
-- this helper function restores the fracion notation with 1 as numerator
local function fraction1(decimal)
	decimal = tonumber(decimal)
	if decimal >= 1 then
		return decimal
	end
	
	local precision = 1E-15
	local z = decimal
	local predenum = 0
	local sc, num
	local denum = 1
	
	repeat
		z = 1 / (z - math.floor(z))
		sc = denum
		denum = denum * math.floor(z) + predenum
		predenum = sc
		num = math.ceil(decimal * denum)
	until ((math.abs(decimal - (num / denum)) < precision) or (z == math.floor(z)) or num == 1)
	
	return num .. '/' .. denum
end

return {
	getUnit = getUnit,
	convert_default = convert_default,
	fraction1 = fraction1
}