Modul:Vorlage:RGBl

aus Wikipedia, der freien Enzyklopädie

Die Dokumentation für dieses Modul kann unter Modul:Vorlage:RGBl/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</span>", alert )
end -- fault()

-- Export
local p = { }



offa = {
["1919"]=203, ["1920"]=235, ["1921"]=71, ["1922"]=99, ["1923"]=135,
["1924"]=23, ["1925"]=53, ["1926"]=51, ["1927"]=53, ["1928"]=53, ["1929"]=51,
["1930"]=71, ["1931"]=99, ["1932"]=75, ["1933"]=126, ["1934"]=115,
["1935"]=143, ["1936"]=91, ["1937"]=107, ["1938"]=179, ["1939"]=230,
["1940"]=47, ["1941"]=29, ["1942"]=103, ["1943"]=21, ["1944"]=15, ["1945"]=1
}

offb = {
["1922"]=29, ["1923"]=35, ["1924"]=27, ["1925"]=25, ["1926"]=27, ["1927"]=27,
["1928"]=27, ["1929"]=29, ["1930"]=29, ["1931"]=27, ["1932"]=19, ["1933"]=17,
["1934"]=31, ["1935"]=35, ["1936"]=27, ["1937"]=27, ["1938"]=15, ["1939"]=15,
["1940"]=19, ["1941"]=19, ["1942"]=13, ["1943"]=7, ["1944"]=1, ["1945"]=1
}



function p.linkRGBl(arglist)
	local name = arglist[1]
	local prelbl
	local preabbr
	local iseite = ''
	local wartung = ''
	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, iseite, trash = string.match(name, "(%d+)(n*) (%a+) S. (%d+),* *(%d*)([^ \t\n,0-9]*)")
	if not jahr then
		teil = "I"
		jahr, sichtbar, seite, iseite, trash = string.match(name, "(%d+)(n*) S. (%d+),* *(%d*)([^ \t\n,0-9]*)")
	end
	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
		wartung = "[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:RGBl]]"
	end
	if teil == "I" then
		ateil = "dra"
	elseif teil == "II" then
		ateil = "drb"
	else
		return fault("Angabe zum Teil falsch")
	end
	if not iseite then
		iseite = ""
	end
	if iseite == "" then tmp = seite else tmp = iseite end
	if ateil == "dra" then
		aseite = offa[jahr] + tmp - 1
	else
		aseite = offb[jahr] + tmp - 1
	end
	if (jahr + 0) > 1945 or (jahr + 0) < 1919 then
		fault("Jahrgang nicht in der Datenbank")
	end
	if not sichtbar then sichtbar = "" end
	if sichtbar == "n" then
		prelbl = "RGBl."
	else
		prelbl = string.format("RGBl. %d", jahr)
	end
	if jahr + 0 > 1921 then
		prelbl = string.format("%s %s", prelbl, teil)
		preabbr = string.format("<abbr title=\"Reichsgesetzblatt Jahrgang %d Teil %s", jahr, teil)
	else
		preabbr = string.format("<abbr title=\"Reichsgesetzblatt Jahrgang %d", jahr)
		if teil == "drb" then
			return fault("%s gab es keinen Teil %s", jahr, teil)
		end
	end
	url = string.format("aid=%s&datum=%s&page=%d", ateil, jahr, aseite)
	url = string.format("https://alex.onb.ac.at/cgi-content/alex?%s", url)
	lbl = string.format("%s S. %d", prelbl, seite)
	if string.len(iseite) > 0 then
		lbl = lbl..", "..iseite
	end
	if not string.match(lbl, "<abbr ") then
		lbl = string.format("%s Seite %d, ausgegeben zu Berlin\">%s</abbr>", preabbr, seite, lbl)
	end
	return '[' ..url .. ' ' .. lbl .. ']' .. wartung
end




function p.getrgbl(frame)
    local lucky, r = pcall(p.linkRGBl, frame.args)
    if not lucky then
        r = fault("Parameterfehler in [[Vorlage:RGBl]]: " .. r)
    end
    return r
end



return p