Módulo:Wikidata/Units
Apariencia
La documentación para este módulo puede ser creada en Módulo:Wikidata/Units/doc
-- 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
}