gemeinsam neue Wege der Erkenntnis gehen
Eine freie Initiative von Menschen bei anthrowiki.at anthrowiki.at, anthro.world anthro.world, biodyn.wiki biodyn.wiki und steiner.wiki steiner.wiki
mit online Lesekreisen, Übungsgruppen, Vorträgen ...
Wie Sie die Entwicklung von AnthroWiki durch Ihre Spende unterstützen können, erfahren Sie hier.

Use Google Translate for a raw translation of our pages into more than 100 languages.
Please note that some mistranslations can occur due to machine translation.
Alle Banner auf einen Klick

Modul:Vorlage:BGBl

Aus AnthroWiki

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, "&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: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