Modul:Vorlage:BGBl: Unterschied zwischen den Versionen

Aus ÖsterreichWiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „local function fault(alert) -- Format message with class="error" -- alert -- string, with message -- Returns message with markup return s…“)
 
((Kategorisierung) Wartungskategorie 'Kategorie:Regiowiki:Vorlagenfehler/Vorlage:BGBl' nun mit numerischem Sortierungsschlüssel als Fehlerfallindiz versehen (konkret '0' in der Funktion 'fault()' und '1' bis '5' in der Funktion 'linkBGBl()' bzw. indirekt damit in der Funktion 'getbgbl()'))
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 3: Zeile 3:
     --    alert  -- string, with message
     --    alert  -- string, with message
     -- Returns message with markup
     -- Returns message with markup
     return string.format("<span class=\"error\">%s [[Vorlage:BGBl|(Hilfe)]]</span>[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:BGBl]]", alert)
     return string.format("<span class=\"error\">%s [[Vorlage:BGBl|(Hilfe)]]</span>[[Kategorie:Regiowiki:Vorlagenfehler/Vorlage:BGBl|0]]", alert)
end -- fault()
end -- fault()


Zeile 124: Zeile 124:
teil = "II"
teil = "II"
end
end
wartung = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:BGBl]]"
wartung = "[[Kategorie:Regiowiki:Vorlagenfehler/Vorlage:BGBl|1]]"
else
else
Zeile 155: Zeile 155:
return fault('"S." oder "Nr." fehlt')
return fault('"S." oder "Nr." fehlt')
end
end
if (jahr + 0) > 1996 then wartung = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:BGBl]]" end
if (jahr + 0) > 1996 then wartung = "[[Kategorie:Regiowiki:Vorlagenfehler/Vorlage:BGBl|2]]" end
end
end
end
end
Zeile 170: Zeile 170:
return fault("Angabe zum Teil nicht erkannt")
return fault("Angabe zum Teil nicht erkannt")
end
end
if (jahr + 0) < 1945 then wartung = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:BGBl]]" end
if (jahr + 0) < 1945 then wartung = "[[Kategorie:Regiowiki:Vorlagenfehler/Vorlage:BGBl|3]]" end
if (jahr + 0) > 2040 then wartung = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:BGBl]]" end
if (jahr + 0) > 2040 then wartung = "[[Kategorie:Regiowiki:Vorlagenfehler/Vorlage:BGBl|4]]" end
if austria then
if austria then
if ateil == 0 then
if ateil == 0 then
Zeile 184: Zeile 184:
end
end
else
else
if (jahr + 0) < 1997 then wartung = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:BGBl]]" end
if (jahr + 0) < 1997 then wartung = "[[Kategorie:Regiowiki:Vorlagenfehler/Vorlage:BGBl|5]]" end
if (jahr + 0) < 1945 then
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)
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)

Aktuelle Version vom 7. August 2022, 10:01 Uhr

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:Regiowiki:Vorlagenfehler/Vorlage:BGBl|0]]", 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:Regiowiki:Vorlagenfehler/Vorlage:BGBl|1]]"
	else
		
		tmp = string.match(name, "&nbsp;")
		if tmp then
			return fault("&amp;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:Regiowiki:Vorlagenfehler/Vorlage:BGBl|2]]" 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:Regiowiki:Vorlagenfehler/Vorlage:BGBl|3]]" end
	if (jahr + 0) > 2040 then wartung = "[[Kategorie:Regiowiki:Vorlagenfehler/Vorlage:BGBl|4]]" 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:Regiowiki:Vorlagenfehler/Vorlage:BGBl|5]]" 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/banzxaver/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/banzxaver/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