Modul:Vorlage:BGBl
Die Dokumentation für dieses Modul kann unter Modul:Vorlage:BGBl/Doku erstellt werden
local function fault(alert)
-- Format message with class="error"
-- alert -- string, with message
-- Returns message with markup
return string.format("<span class=\"error\">%s [[Vorlage:BGBl|(Hilfe)]]</span>[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:BGBl]]", alert)
end -- fault()
-- 1 Promille der Dateinamen von bgbl.de sind unsystematisch:
filter={["bgbl106s0437.pdf"]="bgbl106d0437.pdf",
["bgbl106s0438.pdf"]="bgbl106d0438.pdf",
["bgbl106s0444.pdf"]="bgbl106d0444.pdf",
["bgbl106s0454.pdf"]="bgbl106d0454.pdf",
["bgbl106s0464.pdf"]="bgbl106d0464.pdf",
["bgbl106s0465.pdf"]="bgbl106d0465.pdf",
["bgbl106s0466a.pdf"]="bgbl106d0466a.pdf",
["bgbl106s0466b.pdf"]="bgbl106d0466b.pdf",
["bgbl106s0467a.pdf"]="bgbl106d0467a.pdf",
["bgbl106s0467b.pdf"]="bgbl106d0467b.pdf",
["bgbl107s2893.pdf"]="bgbl107065s2893.pdf",
["bgbl107s2894.pdf"]="bgbl107065s2894.pdf",
["bgbl107s2897.pdf"]="bgbl107065s2897.pdf",
["bgbl107s2904.pdf"]="bgbl107065s2904.pdf",
["bgbl107s2930.pdf"]="bgbl107065s2930.pdf",
["bgbl107s2936.pdf"]="bgbl107065s2936.pdf",
["bgbl107s2937.pdf"]="bgbl107065s2937.pdf",
["bgbl107s2938.pdf"]="bgbl107065s2938.pdf",
["bgbl107s2942.pdf"]="bgbl107065s2942.pdf",
["bgbl107s2945.pdf"]="bgbl107065s2945.pdf",
["bgbl107s2961.pdf"]="bgbl107065s2961.pdf",
["bgbl107s2962a.pdf"]="bgbl107065s2962a.pdf",
["bgbl107s2962b.pdf"]="bgbl107065s2962b.pdf",
["bgbl107s2964.pdf"]="bgbl107065s2964.pdf",
["bgbl108s0393.pdf"]="bgbl108010s0393.pdf",
["bgbl108s0394.pdf"]="bgbl108010s0394.pdf",
["bgbl108s0399.pdf"]="bgbl108010s0399.pdf",
["bgbl108s0408.pdf"]="bgbl108010s0408.pdf",
["bgbl108s0414.pdf"]="bgbl108010s0414.pdf",
["bgbl108s0415.pdf"]="bgbl108010s0415.pdf",
["bgbl108s0416.pdf"]="bgbl108010s0416.pdf",
["bgbl206s0825.pdf"]="bgbl206024s825.pdf",
["bgbl206s0826.pdf"]="bgbl206024s826.pdf",
["bgbl206s0827.pdf"]="bgbl206024s827.pdf",
["bgbl206s0830.pdf"]="bgbl206024s830.pdf",
["bgbl206s0832.pdf"]="bgbl206024s832.pdf",
["bgbl206s0834.pdf"]="bgbl206024s834.pdf",
["bgbl206s0836.pdf"]="bgbl206024s836.pdf",
["bgbl206s0837.pdf"]="bgbl206024s837.pdf",
["bgbl206s0838a.pdf"]="bgbl206024s838a.pdf",
["bgbl206s0838b.pdf"]="bgbl206024s838b.pdf",
["bgbl207s1401.pdf"]="bgbl207028s1401.pdf",
["bgbl207s1402.pdf"]="bgbl207028s1402.pdf",
["bgbl207s1416a.pdf"]="bgbl207028s1416a.pdf",
["bgbl207s1416b.pdf"]="bgbl207028s1416b.pdf",
["bgbl207s1418.pdf"]="bgbl207028s1418.pdf",
["bgbl207s1419.pdf"]="bgbl207028s1419.pdf",
["bgbl207s1420.pdf"]="bgbl207028s1420.pdf",
["bgbl207s1423.pdf"]="bgbl207028s1423.pdf",
["bgbl207s1425.pdf"]="bgbl207028s1425.pdf",
["bgbl207s1427.pdf"]="bgbl207028s1427.pdf",
["bgbl207s1428.pdf"]="bgbl207028s1428.pdf",
["bgbl207s1937.pdf"]="bgbl207040s1937.pdf",
["bgbl207s1938.pdf"]="bgbl207040s1938.pdf",
["bgbl207s1950.pdf"]="bgbl207040s1950.pdf",
["bgbl207s1953.pdf"]="bgbl207040s1953.pdf",
["bgbl207s1962.pdf"]="bgbl207040s1962.pdf",
["bgbl207s1967a.pdf"]="bgbl207040s1967a.pdf",
["bgbl207s1967b.pdf"]="bgbl207040s1967b.pdf",
["bgbl207s1968.pdf"]="bgbl207040s1968.pdf",
["bgbl207s1969.pdf"]="bgbl207040s1969.pdf",
["bgbl207s1970.pdf"]="bgbl207040s1970.pdf",
["bgbl207s1971.pdf"]="bgbl207040s1971.pdf",
["bgbl207s1972.pdf"]="bgbl207040s1972.pdf",
["bgbl207s1974a.pdf"]="bgbl207040s1974a.pdf",
["bgbl207s1974b.pdf"]="bgbl207040s1974b.pdf",
["bgbl207s1975a.pdf"]="bgbl207040s1975a.pdf",
["bgbl207s1976.pdf"]="bgbl207040s1976.pdf",
["bgbl208s0781.pdf"]="bgbl208s781.pdf",
["bgbl208s0782.pdf"]="bgbl208s782.pdf",
["bgbl208s0786.pdf"]="bgbl208s786.pdf",
["bgbl208s0790.pdf"]="bgbl208s790.pdf",
["bgbl208s0792.pdf"]="bgbl208s792.pdf",
["bgbl208s0793a.pdf"]="bgbl208s793a.pdf",
["bgbl208s0793b.pdf"]="bgbl208s793b.pdf",
["bgbl208s0794.pdf"]="bgbl208s794.pdf",
["bgbl208s0795.pdf"]="bgbl208s795.pdf",
["bgbl208s0796.pdf"]="bgbl208s796.pdf",
["bgbl211s0010.pdf"]="bgbl2110010.pdf",
["bgbl213s0681.pdf"]="bgbl2130681.pdf",
["bgbl213s0682.pdf"]="bgbl2130682.pdf",
["bgbl213s0763.pdf"]="bgbl2130763.pdf",
["bgbl290s0885.pdf"]="bgbl290s0885_gross.pdf"} -- Einigungsvertrag (zwar nicht fehlerhaft, aber so nicht lesbar)
-- Export
local p = { }
function p.linkBGBl(arglist)
local name = arglist[1]
local teil = arglist.teil
local jahr = arglist.jahr
local seite = arglist.seite
local zusatz = arglist.zusatz
local lbl = arglist.text
local prelbl
local preabbr
local panchor = ''
local iseite = ''
local wartung = ''
local austria = false
-- Die nächsten Zeilen sind ausschließlich für direkten Modultest sinnvoll.
if not name then name = "{{{1}}}" end
if not zusatz then zusatz = "{{{zusatz}}}" end
if not lbl then lbl = "{{{text}}}" end
--
if zusatz == "{{{zusatz}}}" then
zusatz = ""
end
if name == "{{{1}}}" then
if teil == "1" then
teil = "I"
else
teil = "II"
end
wartung = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:BGBl]]"
else
tmp = string.match(name, " ")
if tmp then
return fault("&nbsp; nicht erlaubt")
end
tmp = string.match(name, " ") or string.match(name, "/ ") or string.match(name, " [/,%.a-z]")
if tmp then
return fault("überschüssiges Leerzeichen")
end
tmp = string.match(name, "nI") or string.match(name, "%dI") or string.match(name, "I[SN]") or string.match(name, "[,%.]%d")
if tmp then
return fault("fehlendes Leerzeichen")
end
jahr, sichtbar, teil, seite, zusatz, iseite, trash = string.match(name, "(%d+)(n*) (%a+) S. (%d+)([a-d]*),* *(%d*)([^ \t\n,0-9]*)")
if trash and string.len(trash) > 0 then
return fault("überschüssige Zeichen am Ende")
end
if not seite then
jahr, sichtbar, teil, nummer = string.match(name, "(%d+)(n*) (%a+) Nr. (%d+)")
end
if not teil then
austria = true
teil, nummer, jahr = string.match(name, "(I+) Nr. (%d+a*)/(%d+)")
if not teil then
nummer, jahr = string.match(name, "Nr. (%d+a*)/(%d+)")
teil = ""
if not jahr then
return fault('"S." oder "Nr." fehlt')
end
if (jahr + 0) > 1996 then wartung = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:BGBl]]" end
end
end
end
if teil == "I" then
ateil = 1
elseif teil == "II" then
ateil = 2
elseif teil == "III" then
ateil = 3
elseif teil == "" then
ateil = 0
else
return fault("Angabe zum Teil nicht erkannt")
end
if (jahr + 0) < 1945 then wartung = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:BGBl]]" end
if (jahr + 0) > 2040 then wartung = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:BGBl]]" end
if austria then
if ateil == 0 then
if (jahr + 0) == 1945 then
if nummer == '0' then
lbl = string.format("<abbr title=\"Bundesgesetzblatt für die Republik Österreich, Nummer %d, Jahrgang %d [PDF]\">BGBl. Nr. %d/%d</abbr>", 1, jahr, 1, jahr)
else
lbl = string.format("<abbr title=\"Staatsgesetzblatt für die Republik Österreich, Nummer %s, Jahrgang %d [PDF]\">StGBl. Nr. %d/%d</abbr>", nummer, jahr, nummer, jahr)
end
else
lbl = string.format("<abbr title=\"Bundesgesetzblatt für die Republik Österreich, Nummer %d, Jahrgang %d [PDF]\">BGBl. Nr. %d/%d</abbr>", nummer, jahr, nummer, jahr)
end
else
if (jahr + 0) < 1997 then wartung = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:BGBl]]" end
if (jahr + 0) < 1945 then
lbl = string.format("<abbr title=\"Bundesgesetzblatt für den Bundesstaat Österreich, Teil %s, Nummer %s, Jahrgang %d [PDF]\">BGBl. %s Nr. %s/%d</abbr>", teil, nummer, jahr, teil, nummer, jahr)
else
lbl = string.format("<abbr title=\"Bundesgesetzblatt für die Republik Österreich, Teil %s, Nummer %s, Jahrgang %d [PDF]\">BGBl. %s Nr. %s/%d</abbr>", teil, nummer, jahr, teil, nummer, jahr)
end
end
if (jahr + 0) >= 2004 then
url = string.format("https://www.ris.bka.gv.at/Dokumente/BgblAuth/BGBLA_%d_%s_%s/BGBLA_%d_%s_%s.pdfsig", jahr, teil, nummer, jahr, teil, nummer)
elseif ateil == 0 then
url = string.format("https://www.ris.bka.gv.at/Dokumente/BgblPdf/%d_%s_%d/%d_%s_%d.pdf", jahr, nummer, ateil, jahr, nummer, ateil)
elseif (jahr + 0) < 1945 then
url = string.format("http://alex.onb.ac.at/cgi-content/alex?aid=bgl&datum=%d", jahr) --, nummer, ateil, jahr, nummer, ateil)
else
url = string.format("https://www.ris.bka.gv.at/Dokumente/BgblPdf/%d_%s_%d/%d_%s_%d.pdf", jahr, nummer, ateil, jahr, nummer, ateil)
end
return '[' .. url .. ' ' .. lbl .. ']' .. wartung
end
if not zusatz then zusatz = "" end
if not sichtbar then sichtbar = "" end
if not iseite or iseite == "" then
iseite = ""
else
panchor = '#page=' .. (iseite - seite + 1)
end
ajahr = jahr % 100
if sichtbar == "n" then
prelbl = "BGBl."
else
prelbl = string.format("BGBl. %d", jahr)
end
if jahr + 0 > 1950 then
prelbl = string.format("%s %s", prelbl, teil)
preabbr = string.format("<abbr title=\"Bundesgesetzblatt Jahrgang %d Teil %s", jahr, teil)
else
preabbr = string.format("<abbr title=\"Bundesgesetzblatt Jahrgang %d", jahr)
end
if seite then
url = string.format("bgbl%d%02ds%04d%s.pdf", ateil, ajahr, seite, zusatz)
url = filter[url] or url
url = string.format("https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=%s", url)
if lbl == "{{{text}}}" then
lbl = string.format("%s S. %d", prelbl, seite)
if string.len(iseite) > 0 then
lbl = lbl..", "..iseite
end
end
if not string.match(lbl, "<abbr ") then
lbl = string.format("%s Seite %d [PDF], ausgegeben zu Bonn\">%s</abbr>", preabbr, seite, lbl)
end
else
url = string.format("https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=bgbl%d%02d%03d.pdf", ateil, ajahr, nummer)
if lbl == "{{{text}}}" then
lbl = string.format("%s Nr. %d", prelbl, nummer)
end
if not string.match(lbl, "<abbr ") then
lbl = string.format("%s Nummer %d [PDF], ausgegeben zu Bonn\">%s</abbr>", preabbr, nummer, lbl)
end
end
if ateil == 3 then
return lbl .. wartung
else
return '[' ..url .. panchor .. ' ' .. lbl .. ']' .. wartung
end
end
function p.getbgbl(frame)
local lucky, r = pcall(p.linkBGBl, frame.args)
if not lucky then
r = fault("Parameterfehler in [[Vorlage:BGBl]]: " .. r)
end
return r
end
return p