Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch

Modul: Dokumentation

Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus


local function fault(s)
	return string.format('<span class="error">%s</span>', alert)
end

local function f(line)
	local prefix = ""
	local vo
	local abs
	local rest
	vo, abs, rest = string.match(line, "^(Abs%.?)[ @](%d+[a-zA-Z]*)[ @](.*)")
	if vo then
		prefix = '<abbr title="Absatz">Abs.</abbr> '..abs..' '
		line = rest
	end
	vo, rest = string.match(line, "^(VO)[ @](.*)")
	if vo then
		return prefix..'<abbr title="der Verordnung">VO</abbr> '..rest
	else
		vo, rest = string.match(line, "^(G)[ @](.*)")
	end
	if vo then
		return prefix..'<abbr title="des Gesetzes">G</abbr> '..rest
	else
		vo, rest = string.match(line, "^(VwV)[ @](.*)")
	end
	if vo then
		return prefix..'<abbr title="der Verwaltungsvorschrift">VwV</abbr> '..rest
	else
		return line
	end
end

function restoreNbsp(line)
	return string.gsub(line, "@", "&nbsp;")
end

-- Export
local p = { }

function p.lastChange(arglist)
	local line = arglist[1]
	local sect
	local art
	local rest
	local xline
	sect = string.match(line, "@")
	if sect then
		return line.."[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:Infobox Gesetz]]"
	end
	xline = string.gsub(line, "&nbsp;", "@")
	sect, art, rest = string.match(xline, "^(Art%.?)[ @]?([IVX%d]+%a*)[ @](.*)")
	if sect then
		return restoreNbsp('<abbr title="Artikel">Art.</abbr> '..art..' '..f(rest))
	end
	sect, art, rest = string.match(xline, "^(§)[ @]?([IVX%d]+%a*)[ @](.*)")
	if sect then
		return restoreNbsp('§ '..art..' '..f(rest))
	else
		art, rest = string.match(xline, "^(G)[ @](.*)")
	end
	if art then
		return restoreNbsp('<abbr title="Gesetz">G</abbr> '..rest)
	else
		art, rest = string.match(xline, "^(VO)[ @](.*)")
	end
	if art then
		return restoreNbsp('<abbr title="Verordnung">VO</abbr> '..rest)
	else
		art, rest = string.match(xline, "^(VwV)[ @](.*)")
	end
	if art then
		return restoreNbsp('<abbr title="Verwaltungsvorschrift">VwV</abbr> '..rest)
	else
		return line
	end
end

function p.letzteAenderung(frame)
	local lucky
	local r
	lucky, r = pcall(p.lastChange, frame.args)
	if not lucky then
		r = fault("Parameterfehler in [[Vorlage:Infobox Gesetz]]: "..r.."[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:Infobox Gesetz]]")
	end
	return r
end

return p