Modul:Hilfsfunktionen: Unterschied zwischen den Versionen

Aus GaretienWiki
Zur Navigation springen Zur Suche springen
VolkoV (D | B)
VolkoV (D | B)
Zeile 53: Zeile 53:
 
return s
 
return s
 
end
 
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
 +
 +
--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
 
end

Version vom 31. Dezember 2021, 07:55 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

--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