Op den Inhalt sprangen

Modul:TypeConversion

Vu Wikipedia

D'Modul:TypeConversion regruppéiert Funktioune fir Variabele vun engem Typ an een aneren ze konvertéieren. Bis elo sinn déi follgend Funktiounen implementéiert:

  • convertStringToNumber: Mat dëser Funktioun kann een Text, deen eng Zuel am fir déi lëtzebuergesch Wikipedia definéierte Format duerstellt, an de Lua-Typ number ëmwandelen.
Beispiller mat Erklärungen: {{#invoke:TypeConversion|convertStringToNumber|123.456,789}} liwwert 123456.789 als Ausgab. Den Ënnerscheed net nëmmen an der Duerstellung vun der Zuel – nämlech d'Ewechfale vum Punkt als Dausenderseparator an d'Ersetze vum Komma duerch ee Punkt als Dezimalseparator –, mee doduerch, datt et sech ëm eng Zuel handelt an net méi ëm een Text, deen eng Zuel duerstellt, kann een domat rechnen. Sou féiert {{#expr:123.456,789 + 123.456,789}} zur Feelermeldung „Expressiouns-Feeler: D'Sazzeechen "," gouf net erkannt“. Dogéint liwwert {{#expr: {{#invoke:TypeConversion|convertStringToNumber|123.456,789}} + {{#invoke:TypeConversion|convertStringToNumber|123.456,789}}}} als Ausgab 246913.578. Natierlech kann ee sech elo froen: Firwat net d'Zuelen direkt am richtege Format aginn, also {{#expr: 123456.789 + 123456.789}}? Dat wier hei natierlech vill méi einfach, mee d'Nëtzlechkeet vun der Funktioun convertStringToNumber weist sech do, wou ee mat der Ausgab vun anere Moduler oder Schablounen rechne wëll, déi awer am Textformat geliwwert ginn. Zum Beispill kann een net einfach {{#expr: {{#invoke:Wd|property|Q950058|P4876|P518=Q8034324}}/{{#invoke:Wd|property|Q950058|P4876|P518=Q50081413}}}} schreiwe fir déi duerschnëttlech Zuel vu Wierder pro Artikel op der lëtzebuergescher Wikipedia ze rechnen, mee mat {{#expr: {{#invoke:TypeConversion|convertStringToNumber|{{#invoke:Wd|property|Q950058|P4876|P518=Q8034324}}}} / {{#invoke:TypeConversion|convertStringToNumber|{{#invoke:Wd|property|Q950058|P4876|P518=Q50081413}}}}}} klappt et an et kritt een dat richtegt Resultat, nämlech 196.76377557424.
  • convertNumberToString: Mat dëser Funktioun kann een Text, deen eng Zuel am fir de Lua-Typ number spezifesche Format duerstellt, an een Text, deen d'Zuel am fir déi lëtzebuergesch Wikipedia spezifesche Format duerstellt, ëmwandelen. Falls dës Funktioun mat engem Text gefiddert gëtt, deen keng Zuel am Lua-Format duerstellt, gëtt d'Funktioun nil erëm.
Beispiller mat Erklärungen: {{#invoke:TypeConversion|convertNumberToString|123456.789}} liwwert 123.456,789 als Ausgab. D'Nëtzlechkeet vun dëser Funktioun weist sech do, wou een eng Zuel net einfach am richtege Format an eng Säit schreiwe kann, well d'Zuel d'Ausgabe vun anere Funktiounen (z.&nnbsp;B. vu Moduler oder vu Schablounen) ass oder soss gerechent gëtt. Am Beispill uewe mat der duerchschnëttlecher Zuel vu Wierder pro Artikel kann een {{#invoke:TypeConversion|convertNumberToString|{{#expr: {{#invoke:TypeConversion|convertStringToNumber|{{#invoke:Wd|property|Q950058|P4876|P518=Q8034324}}}} / {{#invoke:TypeConversion|convertStringToNumber|{{#invoke:Wd|property|Q950058|P4876|P518=Q50081413}}}}}}}} schreiwe fir d'Zuel als 196,76377557424 ugewisen ze kréien, wat deem übleche Format entsprécht.

local p = {}

function p.convertStringToNumber(frame)
	-- Konvertéiert ee String, deen eng Zuel am fir d'lb.wiki definéierte Format
	-- duerstellt, an de Lua-Typ „Number“.
	local str = frame.args[1]
    local lang = mw.language.getContentLanguage()
    return lang:parseFormattedNumber(str)
end

function p.convertNumberToString(frame)
    -- Konvertéiert ee String, deen eng Zuel am fir de Lua-Typ „Number“
    -- spezifesche Format duerstellt, an ee String am fir d'lbwiki definéierte
    -- Format.
    local numStr = frame.args[1]
    local lang = mw.language.getContentLanguage()
    local num = tonumber(numStr)
    if num == nil then
        return nil
    end
    return lang:formatNum(num)
end

return p