Modul:Adresse: Unterschied zwischen den Versionen

272 Bytes hinzugefügt ,  Donnerstag um 19:02
Adresse() subobject optimiert
(div. Optimierungen)
(Adresse() subobject optimiert)
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
local p = {}
local p = {}


local com = require("Modul:Common")
local dev = require("Modul:Development")
local dev = require("Modul:Development")
local str = require("Modul:String")
local str = require("Modul:String")
local smw = require("Modul:SMW")
local geo = require("Modul:Geo")
local geo = require("Modul:Geo")
local wik = require("Modul:Wiki")
local wik = require("Modul:Wiki")
local kal = require("Modul:Kalender")


function p.Adresse(frame)
function p.Adresse(frame)
Zeile 12: Zeile 13:
-- =p.Adresse{pargs={["Adressart"]="Wohnung", ["Straße"]="Schwabacher Straße", ["Hausnummer"]="12",["AdresseVon"]="2020-03-04", ["AdresseBis"]="2021-05-06",  ["Kommentar"]="f"}}
-- =p.Adresse{pargs={["Adressart"]="Wohnung", ["Straße"]="Schwabacher Straße", ["Hausnummer"]="12",["AdresseVon"]="2020-03-04", ["AdresseBis"]="2021-05-06",  ["Kommentar"]="f"}}
-- =p.Adresse{pargs={["Adressart"]="Wohnung", ["Straße"]="Fichtenstraße", ["Hausnummer"]="44",["AdresseVon"]="2020-03-04", ["AdresseBis"]="2021-05-06",  ["Kommentar"]="f"}}
-- =p.Adresse{pargs={["Adressart"]="Wohnung", ["Straße"]="Fichtenstraße", ["Hausnummer"]="44",["AdresseVon"]="2020-03-04", ["AdresseBis"]="2021-05-06",  ["Kommentar"]="f"}}
-- =p.Adresse{pargs={["Adressart"]="Geschäftsanschrift",["AdresseVon"]="1961",["AdresseBis"]="2024/07/01",["Straße"]="Würzburger Straße",["Hausnummer"]="454"}}
local t = ""
local t = ""
local fail = false
local fail = false
local frame, pargs = dev.GetFrameAndParentArgs(frame)
local frame, pargs = dev.GetFrameAndParentArgs(frame)
local attr, attr_empty = wik.getParentArgs(pargs, {"Adressart", "AdresseVon", "AdresseBis", "Straße", "Hausnummer", "Kommentar"})
local attr, attr_empty = wik.getArgs(pargs, {"Adressart", "AdresseVon", "AdresseBis", "Straße", "Hausnummer", "Kommentar"})


if attr_empty then -- Überhaupt Parameter übergeben?
if attr_empty then -- Überhaupt Parameter übergeben?
fail = true
fail = true
else
else
-- subobject-Name
-- subobject-Name
local subobject = {}
local subobject = {"Adresse"}
table.insert(subobject, attr["Adressart"])
table.insert(subobject, attr["Adressart"])
table.insert(subobject, attr["Straße"])
table.insert(subobject, attr["Straße"])
table.insert(subobject, attr["Hausnummer"])
table.insert(subobject, attr["Hausnummer"])
table.insert(subobject, attr["Kommentar"])
subobject = table.concat(subobject, " ")
subobject = table.concat(subobject, " ")
subobject = smw.subobjectIdCleaner(subobject)
if subobject == "" then -- subobject-Name fehlerhaft?
if subobject == "" then -- subobject-Name fehlerhaft?
fail = true
fail = true
Zeile 32: Zeile 35:
-- SubObjektTyp setzen
-- SubObjektTyp setzen
attr["SubObjektTyp"] = "Adresse"
attr["SubObjektTyp"] = "Adresse"
-- Straße/Hausnummer auswerten
-- Straße/Hausnummer auswerten
if attr["Straße"] ~= nil then
if attr["Straße"] ~= nil then
Zeile 43: Zeile 45:
fail = true -- Fehler Hausnummer ohne Straße
fail = true -- Fehler Hausnummer ohne Straße
end
end
-- Postleitzahl ermitteln
-- Postleitzahl ermitteln
if attr["Straße"] ~= nil then
if attr["Straße"] ~= nil then
Zeile 51: Zeile 52:
end
end
end
end
-- VonObjekt erstellen
-- VonObjekt erstellen
if attr["StraßeHnr"] ~= nil then
if attr["StraßeHnr"] ~= nil then
Zeile 64: Zeile 64:
end
end
end
end
-- subobject setzen
-- subobject setzen
mw.smw.subobject(attr, subobject)
mw.smw.subobject(attr, subobject)
-- Plausibilitätsprüfung von/bis
-- Plausibilitätsprüfung von/bis
if attr["AdresseVon"] ~= nil and attr["AdresseBis"] ~= nil and
if attr["AdresseVon"] ~= nil and attr["AdresseBis"] ~= nil and
  p.smwDate2CompareIndex(attr["AdresseVon"], "von") > p.smwDate2CompareIndex(attr["AdresseBis"], "bis") then
  p.formDate2CompareIndex(attr["AdresseVon"], "von") > p.formDate2CompareIndex(attr["AdresseBis"], "bis") then
  fail = true
  fail = true
end
end
end -- Ende if subobject-Name fehlerhaft?
end -- Ende if subobject-Name fehlerhaft?
end -- Ende if not attr_empty
end -- Ende if not attr_empty
 
-- Wartungsmeldung Adresse fehlerhaft
-- Kategorie:Fehlerhafte Adresse
if fail then
if fail then
t = t .. "[[Kategorie:Fehlerhafte Adresse]]"
mw.smw.set{["Wartungsmeldung"]="Adresse fehlerhaft"}
end
end
-- mw.logObject(t, "t")
-- mw.logObject(t, "t")
return t
return t
end
end


function p.smwDate2CompareIndex(date, vonbis)
function p.formDate2CompareIndex(date, vonbis)
-- mw.log("smwDate2CompareIndex(" .. date .. ")")
-- mw.log("formDate2CompareIndex(" .. date .. ")")
-- Datum in Index wandeln
-- Datum in Index wandeln
-- Bsp.: 23 Apr. 1989 => 19890423
-- Bsp.: 23 April 1989 => 19890423
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.smwDate2CompareIndex("2000","von")
-- =p.formDate2CompareIndex("2000","von")
-- =p.smwDate2CompareIndex("2000","bis")
-- =p.formDate2CompareIndex("2000","bis")
-- =p.smwDate2CompareIndex("Februar 2000","von")
-- =p.formDate2CompareIndex("Februar 2000","von")
-- =p.smwDate2CompareIndex("Februar 2000","bis")
-- =p.formDate2CompareIndex("Februar 2000","bis")
-- =p.smwDate2CompareIndex("3. Februar 2000","von")
-- =p.formDate2CompareIndex("2000/02/03","von")
-- =p.smwDate2CompareIndex("3. Februar 2000","bis")
-- =p.formDate2CompareIndex("2000/02/03","bis")
local index = ""
local index = ""
local date=str.split2(date, " ")
local date = str.split2(date, "/")
if #date == 1 then -- nur Jahr vorhanden
if #date == 3 then -- komplettes Datum vorhanden
index = tostring(date[1])
index = tostring(date[1]) .. tostring(date[2]) .. tostring(date[3])
if vonbis == "von" then
else
index = index .. "0101"
date = str.split2(date[1], " ")
else
if #date == 1 then -- nur Jahr vorhanden
index = index .. "1231"
index = tostring(date[1])
end
if vonbis == "von" then
elseif #date == 2 then -- nur Monat + Jahr vorhanden
index = index .. "0101"
index = tostring(date[2]) .. string.format("%02d", com.getMonthnr(date[1]))
else
if vonbis == "von" then
index = index .. "1231"
index = index .. "01"
end
else
elseif #date == 2 then -- nur Monat + Jahr vorhanden
index = index .. "31"
index = tostring(date[2]) .. string.format("%02d", kal.month_numbers[date[1]])
if vonbis == "von" then
index = index .. "01"
else
index = index .. "31"
end
end
end
elseif #date == 3 then -- komplettes Datum vorhanden
index = tostring(date[3]) .. string.format("%02d",com.getMonthnr(date[2])) .. string.format("%02d", tonumber(string.match(date[1], "%d*")))
end
end
index = tonumber(index) or 0
index = tonumber(index) or 0