Modul:Geo: Unterschied zwischen den Versionen

K
Entfernte den Schutz von „Modul:Geo
(GetPLZ/getPLZ optimiert)
K (Entfernte den Schutz von „Modul:Geo“)
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 75: Zeile 75:
elseif   hausnummer < 9 then plz = 90762 elseif hausnummer < 401 then plz = 90766 else plz = 90768 end -- ungerade H.nr.
elseif   hausnummer < 9 then plz = 90762 elseif hausnummer < 401 then plz = 90766 else plz = 90768 end -- ungerade H.nr.
else
else
local plzask = que.getValues(strasse, "PLZ", true) -- alle anderen Straßen haben nur eine PLZ, die auf deren Seite vemerkt ist
local plz_ask = que.getValues(strasse, "PLZ", true) -- alle anderen Straßen haben nur eine PLZ, die auf deren Seite vemerkt ist
if #plzask == 1 then -- mehr als eine oder keine PLZ?
if #plz_ask == 1 then -- mehr als eine oder keine PLZ?
plz = plzask[1]
plz = plz_ask[1]
end
end
end
end
Zeile 85: Zeile 85:


function p.GetPLZList(frame)
function p.GetPLZList(frame)
local sep = frame.args.sep or ";"
return table.concat(p.getPLZList(), frame.args.sep or ";")
local plzTable = p.getPLZList()
local plzList = str.list(plzTable, sep)
return plzList
end
end


Zeile 97: Zeile 94:
function p.Stadtteil2PLZ(frame)
function p.Stadtteil2PLZ(frame)
-- mw.logObject(frame)
-- mw.logObject(frame)
local plzlist = ""
local plz = ""
local stadtteile = frame.args[1]
local stadtteile = frame.args[1] or ""
if not com.isEmpty(stadtteile) then
if stadtteile ~= "" then
local stadtteilTable = str.split(stadtteile, ";")
local stadtteile = str.splitAndStrip(stadtteile, ";")
local plztable = p.stadtteil2PLZ(stadtteilTable)
plz = p.stadtteil2PLZ(stadtteile)
plzlist = str.list(plztable, ";")
plz = table.concat(plz, ";")
end
end
-- mw.log(plzlist)
-- mw.log(plz)
return plzlist
return plz
end
end


function p.stadtteil2PLZ(stadtteile)
function p.stadtteil2PLZ(stadtteile)
-- gibt die Postleitzahlen der Stadtteile als table zurück
-- gibt die Postleitzahlen der Stadtteile als table zurück
local plztable = {}
local plz_table = {}
if not com.isEmpty(stadtteile) then
if type(stadtteile) == "table" then
if type(stadtteile) == "table" then
for _, s in pairs(stadtteile) do
for _, s in pairs(stadtteile) do
for _, p in pairs(que.getValues(s, "PLZ", true)) do -- p ist string
for _, p in pairs(que.getValues(s, "PLZ", true)) do -- p ist string
plz_table[tonumber(p)] = true -- diese Mechanik verhindert mehrfaches Einfügen der gleichen PLZ
plztable[tonumber(p)] = true -- diese Mechanik verhindert mehrfaches Einfügen der gleichen PLZ
end
end
end
else
plztable[tonumber(que.getValues(stadtteile, "PLZ", true)[1])] = true
end
end
elseif stadtteile ~= nil and stadtteile ~= "" then
plz_table[tonumber(que.getValues(stadtteile, "PLZ", true)[1])] = true
end
end
-- mw.logObject(plztable)
-- mw.logObject(plz_table)


local plzlist = {} -- Tabelle in sortierte Liste überführen
local plz = {} -- Tabelle in sortierte Liste überführen
for p, _ in pairs(plztable) do
for p, _ in pairs(plz_table) do
table.insert(plzlist, p)
table.insert(plz, p)
end
end
table.sort(plzlist)
table.sort(plz)
-- mw.logObject(plzlist)
-- mw.logObject(plz)
return plzlist
return plz
end
end


return p
return p