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("http://www.ris.bka.gv.at/Dokumente/BgblAuth/BGBLA_%d_%s_%s/BGBLA_%d_%s_%s.pdf", jahr, teil, nummer, jahr, teil, nummer) elseif ateil == 0 then url = string.format("http://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("http://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