Zeile 142: |
Zeile 142: |
| return result | | return result |
| end | | end |
| + | |
| + | -- richtet Zahlen numerisch aus |
| + | function Str.adjustnumber(frame) |
| + | local ausgabe; |
| + | local text = frame.args[1] or "" -- Text, der bearbeitet werden soll, i.d.R. eine Dezimalzahl |
| + | local i_li = math.floor(tonumber(frame.args[2])) or 2; -- maximale Stellen links vom Trennzeichen |
| + | local i_re = math.floor(tonumber(frame.args[3])) or 2; -- maximale Stellen rechts vom Trennzeichen |
| + | local sign = frame.args['Z'] or "," -- Trennzeichen |
| + | local zeroes='00000000000000000000'; -- 20 duerften ausreichen. |
| + | local zpos = 0; |
| + | local len = mw.ustring.len(text); |
| + | if not text or sign == "" then |
| + | zpos = len + 1; |
| + | else |
| + | zpos = mw.ustring.find(text, sign,1, true) or len; |
| + | end |
| + | |
| + | local zl = 0; |
| + | local zr = 0; |
| + | local t_li = ""; |
| + | local t_re = ""; |
| + | local z_li =""; |
| + | local z_re =""; |
| + | |
| + | if zpos > 1 then |
| + | t_li = mw.ustring.sub(text,1, zpos-1); |
| + | else |
| + | t_li=""; |
| + | end |
| + | |
| + | if len-zpos > 0 then |
| + | t_re = mw.ustring.sub(text,zpos+1,-1); |
| + | else |
| + | t_re=""; |
| + | end |
| + | |
| + | zl = i_li - mw.ustring.len(t_li); |
| + | if zl < 1 then |
| + | zl = 0; |
| + | z_li = ""; |
| + | else |
| + | z_li = '<span style="visibility:hidden;">' .. mw.ustring.sub(zeroes,1,zl) .. '</span>'; |
| + | end |
| + | |
| + | zr = i_re - mw.ustring.len(t_re); |
| + | if zr < 1 then |
| + | zr = 0; |
| + | z_re =""; |
| + | else |
| + | z_re ='<span style="visibility:hidden;">' .. mw.ustring.sub(zeroes,1,zr) .. '</span>'; |
| + | end |
| + | ausgabe = z_li .. t_li .. sign .. t_re .. z_re; |
| + | return ausgabe; |
| + | end |
| return Str | | return Str |