Modul:Hilfsfunktionen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „ function robusttrim(s) if s==nil then return '' end local p=mw.ustring.gsub(s,'%[%[SMW::on%]%]','') p=mw.ustring.gsub(p,'%[%[SMW::off%]%]','') return…“) |
Keine Bearbeitungszusammenfassung |
||
(14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
-- Macht einen Trim in Kombination mit dem Entfernen der SMW-Tags, verwandelt nils in Strings | |||
function robusttrim(s) | |||
if s==nil then return '' end | |||
local p=mw.ustring.gsub(s,'%[%[SMW::on%]%]','') | |||
p=mw.ustring.gsub(p,'%[%[SMW::off%]%]','') | |||
return mw.text.trim(p) | |||
end | |||
-- Splittet einen String in einen Array anhand eines Separators | |||
function split(inputstr,sep) | |||
if sep==nil then sep="%s" end | |||
local t={} | |||
local i=1 | |||
for str in mw.ustring.gmatch(inputstr,"([^"..sep.."]+)") do | |||
t[i]=str | |||
i=i+1 | |||
end | end | ||
if i==1 then t[1]=inputstr end | |||
function | return t | ||
end | |||
local | |||
local i | -- Ausgabe einer beliebig geschachtelten Tabelle oder Variable | ||
for | -- i muss wegen Rekursion auf "" gesetzt werden | ||
function dump(o,i) | |||
if type(o)=='table' then | |||
local tkeys=getSortKeys(o) | |||
local s='\n'..i..'{ ' | |||
for _,k in ipairs(tkeys) do | |||
s=s..'\n'..i..'['..k..']='..dump(o[k],i.." ")..',' | |||
end | end | ||
return s..'\n'..i..'}' | |||
return | else | ||
return tostring(o) | |||
end | end | ||
end | |||
-- Umwandlung eines Parameters in eine Tabelle, bei nil leer | |||
function noniltable(s) | |||
if s==nil then | |||
return {} | |||
elseif type(s)=="table" then | |||
return s | |||
else | |||
return {s} | |||
end | |||
end | |||
-- Umwandlung eines Parameters in einen String, bei nil leer | |||
function nonilstring(s) | |||
if s==nil then | |||
return "" | |||
else | |||
return s | |||
end | |||
end | |||
--Sortierfunktion, die numerische Werte zuerst, dann Strings sortiert | |||
function sorter(k1, k2) | |||
if(type(k1)~=type(k2)) then | |||
return type(k1)=="number" | |||
end | |||
return k1<k2 | |||
end | |||
--gibt einen Iterator für Tabellen mit sortierten keys zurück | |||
--eine optionale mitgegebene Funktion akzeptiert die Werte table,keya,keyb | |||
function spairs(t, order) | |||
-- collect the keys | |||
local keys = {} | |||
for k in pairs(t) do keys[#keys+1] = k end | |||
-- if order function given, sort by it by passing the table and keys a, b, | |||
-- otherwise just sort the keys | |||
if order then | |||
table.sort(keys, function(a,b) return order(t, a, b) end) | |||
else | |||
table.sort(keys) | |||
end | |||
-- return the iterator function | |||
local i = 0 | |||
return function() | |||
i = i + 1 | |||
if keys[i] then | |||
return keys[i], t[keys[i]] | |||
end | |||
end | |||
end | |||
--Funktion gibt eine Tabelle mit sortierten Schlüsseln zurück, | |||
--mit der dann in Reihenfolge mittels ipairs über die Tabelle iteriert werden kann | |||
function getSortKeys(o) | |||
local tkeys={} | |||
for k in pairs(o) do | |||
table.insert(tkeys,k) | |||
end | |||
table.sort(tkeys,sorter) | |||
return tkeys | |||
end | |||
--Ausgabe eines Artikels als Link | |||
function outputlink(artikel) | |||
local a=mw.text.split(artikel,":",true)[2] | |||
if a==nil then | |||
--Hauptnamensraum | |||
a=artikel | |||
end | |||
return "[["..artikel.."|"..a.."]]" | |||
end | |||
--Ausgabe einer Kategorie zu einem Artikelnamen | |||
function outputkategorie(artikel) | |||
local a=mw.text.split(artikel,":",true)[2] | |||
if a==nil then | |||
a=artikel | |||
end | |||
return "[[Kategorie:"..a.."]]" | |||
end | |||
--Wandelt eine Zahl in einen String mit deutschem Komma um | |||
function tostringd(z) | |||
local s=tostring(z) | |||
s=s:gsub("%.",",") | |||
return s | |||
end |
Aktuelle Version vom 16. April 2024, 06:11 Uhr
Dokumentation und Testfälle unter Modul:Hilfsfunktionen/Doku.
-- Macht einen Trim in Kombination mit dem Entfernen der SMW-Tags, verwandelt nils in Strings function robusttrim(s) if s==nil then return '' end local p=mw.ustring.gsub(s,'%[%[SMW::on%]%]','') p=mw.ustring.gsub(p,'%[%[SMW::off%]%]','') return mw.text.trim(p) end -- Splittet einen String in einen Array anhand eines Separators function split(inputstr,sep) if sep==nil then sep="%s" end local t={} local i=1 for str in mw.ustring.gmatch(inputstr,"([^"..sep.."]+)") do t[i]=str i=i+1 end if i==1 then t[1]=inputstr end return t end -- Ausgabe einer beliebig geschachtelten Tabelle oder Variable -- i muss wegen Rekursion auf "" gesetzt werden function dump(o,i) if type(o)=='table' then local tkeys=getSortKeys(o) local s='\n'..i..'{ ' for _,k in ipairs(tkeys) do s=s..'\n'..i..'['..k..']='..dump(o[k],i.." ")..',' end return s..'\n'..i..'}' else return tostring(o) end end -- Umwandlung eines Parameters in eine Tabelle, bei nil leer function noniltable(s) if s==nil then return {} elseif type(s)=="table" then return s else return {s} end end -- Umwandlung eines Parameters in einen String, bei nil leer function nonilstring(s) if s==nil then return "" else return s end end --Sortierfunktion, die numerische Werte zuerst, dann Strings sortiert function sorter(k1, k2) if(type(k1)~=type(k2)) then return type(k1)=="number" end return k1<k2 end --gibt einen Iterator für Tabellen mit sortierten keys zurück --eine optionale mitgegebene Funktion akzeptiert die Werte table,keya,keyb function spairs(t, order) -- collect the keys local keys = {} for k in pairs(t) do keys[#keys+1] = k end -- if order function given, sort by it by passing the table and keys a, b, -- otherwise just sort the keys if order then table.sort(keys, function(a,b) return order(t, a, b) end) else table.sort(keys) end -- return the iterator function local i = 0 return function() i = i + 1 if keys[i] then return keys[i], t[keys[i]] end end end --Funktion gibt eine Tabelle mit sortierten Schlüsseln zurück, --mit der dann in Reihenfolge mittels ipairs über die Tabelle iteriert werden kann function getSortKeys(o) local tkeys={} for k in pairs(o) do table.insert(tkeys,k) end table.sort(tkeys,sorter) return tkeys end --Ausgabe eines Artikels als Link function outputlink(artikel) local a=mw.text.split(artikel,":",true)[2] if a==nil then --Hauptnamensraum a=artikel end return "[["..artikel.."|"..a.."]]" end --Ausgabe einer Kategorie zu einem Artikelnamen function outputkategorie(artikel) local a=mw.text.split(artikel,":",true)[2] if a==nil then a=artikel end return "[[Kategorie:"..a.."]]" end --Wandelt eine Zahl in einen String mit deutschem Komma um function tostringd(z) local s=tostring(z) s=s:gsub("%.",",") return s end