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. %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 %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..'&a='..sect..' '..titel..']'
end
function restoreNbsp(line)
return string.gsub(line, "@", " ")
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, " ", "@")
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