Modul:Benutzer:Diskletzteänderung

Die Dokumentation für dieses Modul kann unter Modul:Benutzer:Diskletzteänderung/Doku erstellt werden

-- Kopie von [[Modul:Aktenstapel]] für eigene Tests

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

-- Export
local p = { }

function p.findSects(line) 

	local rest = line
	
	local sects = ""
	while rest do
		-- (BGBl. 2001 I S. 123, 123)
		local sect, part, jahr1, jahr2, seite, nrest = string.match(rest, '^(.-)((%d%d%d%d)%D[^%(]-%(<?[^>]->?BGB[Il]%.?[ @]+([%d]-)[ @]*I[ @]+S%.?[ @]+(%d+).-%))(.*)$') 
		if not part then break end
		if jahr2 and jahr2 ~= "" then
			jahr1 = jahr2
		end
		
		sect = p.processSects(sect, jahr1, seite)
		
		sects = sects .. sect ..  part
		rest = nrest
	end
	return sects .. rest
end

function p.processSects(sect, jahr, seite)
	
	if jahr < "2006" then return sect end
	
	if string.match(sect, 'Art') then
		return string.gsub(sect, '(Art%.?[ @])(%d+)([ @]*)([a-z]?)([ @,;]+)', p.createLinkBuzer('%2%4', jahr, seite, '<abbr title="Artikel %2%4">Art.&nbsp;%2%3%4</abbr>') .. '%5')
	end
	if string.match(sect, '§') then
		return string.gsub(sect, '([§]+)[ @](%d+)([ @]*)([a-z]?)([ @,;]+)', p.createLinkBuzer('%2%4', jahr, seite, '%1&nbsp;%2%3%4') .. '%5')
	end
		
	return sect
end

function p.createLinkBuzer(sect, jahr, seite, titel) 
	
	return '[//www.buzer.de/s1.htm?g='..jahr..'+I+'..seite..'&amp;a='..sect..' '..titel..']'

end

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

function p.lastChange(arglist)
	local line = arglist[1]
	local sect
	local xline
	sect = string.match(line, "@")
	if sect then
		return line.."[[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:Infobox Gesetz]]"
	end
	xline = string.gsub(line, "&nbsp;", "@")
	
	xline = p.findSects(xline)
	
	local abbr = { Art = 'Artikel', G = 'Gesetz', VO = 'Verordnung', VwV = 'Verwaltungsvorschrift', Abs = 'Absatz'}
	abbr['ÄndG'] = "Änderungsgesetz"
	abbr['ÄndV'] = "Änderungsverordnung"
	abbr['ÄndVO'] = abbr['ÄndV']
	
	for k, v in pairs(abbr) do
		xline = string.gsub(xline, '^('..k..'%.?)([ @])', '<abbr title="'..v..'">%1</abbr>%2')
		xline = string.gsub(xline, '([ @])('..k..'%.?)([ @])', '%1<abbr title="'..v..'">%2</abbr>%3')
	end

	return restoreNbsp(xline)
end

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

return p