Módulo:Wikidades/Units
Aparencia
[ máis información | ver o historial | | | ver as instrucións ]
Aínda non se redactaron as instrucións sobre como usar este módulo.
[ máis información | ver o historial | | | ver as instrucións ]
Os editores poden probar cambios no mesmo en Módulo:Wikidades/Units/probas.
Por favor, engade as categorías na subpáxina de documentación e os interwikis no Wikidata. Ver as subpáxinas deste módulo.
Por favor, engade as categorías na subpáxina de documentación e os interwikis no Wikidata. Ver as subpáxinas deste módulo.
-- Version copiada de cawiki 20231112
-- sintaxe:
-- Qxxx = { -- label de Wikidata para a referencia
-- label = "label a correxir",
-- plural = "plural a correxir",
-- ucode = "código a engadir",
-- },
local wikidata_units = {
Q531 = { -- ano luz
plural = "anos luz",
},
Q573 = { -- día
ucode = "días",
},
Q1811 = { -- unidade astronómica
ucode = "UA",
},
Q5151 = { -- mes
plural = "meses",
},
Q11229 = { -- porcentaxe
plural = "porcentaxe",
},
Q25224 = { -- libra esterlina
ucode = "£",
},
Q25267 = { -- grao Celsius
plural = "graos Celsius",
ucode = "°C",
},
Q42289 = { -- grao Fahrenheit
plural = "graos Fahrenheit",
ucode = "°F",
},
Q55627 = { -- anos de vida axustados por discapacidade
plural = "anos de vida axustados por discapacidade",
ucode = "AVAD",
},
Q83327 = { -- electrón-voltio
plural = "electróns-voltio",
},
Q93318 = { -- milla náutica
ucode = "mn",
},
Q155009 = { -- Reichsmark
ucode = "ℛℳ",
},
Q209426 = { -- minuto de arco
label = "minuto",
},
Q483261 = { -- unidade de masa atómica
ucode = "uma",
},
Q550207 = { -- dólar Geary-Khamis
plural = "dólares Geary-Khamis",
ucode = "$",
},
Q743895 = { -- pulsacións por minuto
plural = "pulsacións por minuto",
ucode = "ppm",
},
Q751310 = { -- poiseuille
ucode = "PI",
},
Q794261 = { -- metro cúbico por segundo
ucode = "m³/s",
},
Q829073 = { -- segundo de arco
label = "segundo",
ucode = "″", -- WD con comillas rectas
},
Q1463969 = { -- watt por metro-kelvin
ucode = "W/(m·K)",
},
Q2080811 = { -- fracción volumétrica
label = "porcentaxe en volume",
plural = "porcentaxe en volume",
ucode = "%",
},
Q3085309 = { -- joule por quilogramo-kelvin
ucode = "J/Kg·K",
},
Q3858002 = { -- miliampere-hora
ucode = "mAh",
},
Q6859652 = { -- milímetro de mercurio
ucode = "mm Hg",
},
Q20966435 = { -- amperes por voltio-metro
plural = "amperes por voltio-metro",
},
Q20966455 = { -- joule por mol-kelvin
ucode = "J/mol·K",
},
Q21006887 = { -- parte por millón
ucode = "ppm",
},
Q21127659 = { -- gramo por 100 gramos de disolvente
ucode = "g/100 g disolvente",
},
Q26156132 = { -- milinewton por metro
ucode = "mN/m",
},
Q28739766 = { -- coulomb-metre
ucode = "C·m",
},
}
local function getUnit(amount, label, unitID, code, symbol)
if label == nil or label == '' 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
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
}