Modul:Text: Unterschied zwischen den Versionen
keine Bearbeitungszusammenfassung
w>PerfektesChaos (+ ucfirstAll, update uprightNonlatin) |
w>Mps Keine Bearbeitungszusammenfassung |
||
| Zeile 292: | Zeile 292: | ||
function p.uprightNonlatin( frame ) | function p.uprightNonlatin( frame ) | ||
return Text.uprightNonlatin( frame.args[ 1 ] or "" ) | return Text.uprightNonlatin( frame.args[ 1 ] or "" ) | ||
end | |||
function p.zip(frame) | |||
local lists = {} | |||
local seps = {} | |||
local defaultsep = frame.args["sep"] | |||
local innersep = frame.args["isep"] or defaultsep | |||
local outersep = frame.args["osep"] or defaultsep | |||
-- Parameter parsen | |||
for k, v in pairs(frame.args) do | |||
local knum = tonumber(k) | |||
if knum then lists[knum] = v else | |||
if string.sub(k, 1, 3) == "sep" then | |||
local sepnum = tonumber(string.sub(k, 4)) | |||
if sepnum then seps[sepnum] = v end | |||
end | |||
end | |||
end | |||
-- sofern keine expliziten Separatoren angegeben sind, den Standardseparator verwenden | |||
for i = 1, math.max(#seps, #lists) do | |||
if not seps[i] then seps[i] = defaultsep end | |||
end | |||
if #seps < #lists then return '<span class="error">Weniger Trennzeichen als Listen angegeben</span>' end | |||
-- Listen splitten | |||
local maxListLen = 0 | |||
for i = 1, #lists do | |||
lists[i] = mw.text.split(lists[i], seps[i]) | |||
if #lists[i] > maxListLen then maxListLen = #lists[i] end | |||
end | |||
local result = "" | |||
for i = 1, maxListLen do | |||
if i ~= 1 then result = result .. outersep end | |||
for j = 1, #lists do | |||
if j ~= 1 then result = result .. innersep end | |||
result = result .. (lists[j][i] or "") | |||
end | |||
end | |||
return result | |||
end | end | ||