Aktuelle Version |
Dein Text |
Zeile 102: |
Zeile 102: |
| end | | end |
|
| |
|
| function escape_lua_regex(str)
| |
| return mw.ustring.gsub(str, ".", {
| |
| ["%"] = "%%";
| |
| ["^"] = "%^";
| |
| ["$"] = "%$";
| |
| ["."] = "%.";
| |
| ["("] = "%(";
| |
| [")"] = "%)";
| |
| ["["] = "%[";
| |
| ["]"] = "%]";
| |
| ["?"] = "%?";
| |
| ["*"] = "%*";
| |
| ["+"] = "%+";
| |
| ["-"] = "%-";
| |
| ["\0"] = "%z";
| |
| })
| |
| end
| |
|
| |
| function Str.replace(frame)
| |
| local text = frame.args[1] or "" -- Text, der bearbeitet werden soll
| |
| local search = frame.args[2] or "" -- Textstellen innerhalb von "text" die ersetzt werden sollen
| |
| if text == "" or search == "" then return "" end
| |
|
| |
| local replace = frame.args[3] or "" -- Ersetzungstext
| |
| local count = tonumber(frame.args[4]) -- Anzahl der Ersetzungen (optional)
| |
| local regexsearch = frame.args[5] -- beliebiger Wert um dafür zu sorgen, dass der Suchtext "search" als Lua-regulärer Ausdruck behandelt werden soll
| |
|
| |
| if not regexsearch or regexsearch == "" then
| |
| search = escape_lua_regex(search)
| |
| replace = mw.ustring.gsub(replace, "%%", "%%%%")
| |
| end
| |
|
| |
| local result
| |
| if count then
| |
| result,_ = mw.ustring.gsub(text, search, replace, count)
| |
| else
| |
| result,_ = mw.ustring.gsub(text, search, replace)
| |
| end
| |
| return result
| |
| 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 |