Module:Zandbak
Documentatie voor deze module kan aangemaakt worden op de volgende pagina: Module:Zandbak/doc
-- Deze pagina is een zandbak om Lua scripten op te testen en oefenen.
--require('strict')
local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.koptekst(frame)
local args = getArgs(frame)
return koptekst(args)
end
function koptekst(args)
local html = mw.html.create()
local koptekst = html:tag('div')
:addClass('ws-koptekst')
koptekst:node(formatteer(args.auteur, 'auteur'))
local titel_div = koptekst:tag('div'):addClass('ws-koptekst-volledige-titel')
titel_div:node(formatteer(args.titel, 'titel'))
titel_div:node(formatteer(args.ondertitel, 'ondertitel'))
koptekst:node(formatteer(args.redacteur, 'redacteur', 'Redactie door '))
koptekst:node(formatteer(args.vertaler, 'vertaler', 'Vertaald door '))
koptekst:node(formatteer(args.illustrator, 'illustrator', 'Geïllustreerd door '))
koptekst:node(formatteer(args.publicatie_info, 'publicatie-info'))
return html
end
function formatteer(wikitext, eigenschap, voorzetsel)
if not wikitext then
return nil
end
if eigenschap then
wikitext = linkMetEigenschap(wikitext, eigenschap)
end
if voorzetsel then
wikitext = voorzetsel .. wikitext
end
local div = mw.html.create('div')
if eigenschap then
div:addClass('ws-koptekst-' .. eigenschap)
end
div:node(wikitext)
return div
end
function linkMetEigenschap(wikitext, eigenschap)
if not mw.ustring.match(wikitext, '%[%[.*%]%]') then
return tekstMetEigenschap(wikitext, eigenschap)
end
wikitext = mw.ustring.gsub(wikitext, '%[%[([^|]*)|(.*)%]%]', function(pagina, link_tekst)
return '[[' .. pagina .. '|' .. tekstMetEigenschap(link_tekst, eigenschap) .. ']]'
end)
wikitext = mw.ustring.gsub(wikitext, '%[%[([^|]*)%]%]', function(pagina)
return '[[' .. pagina .. '|' .. tekstMetEigenschap(pagina, eigenschap) .. ']]'
end)
return wikitext
end
function tekstMetEigenschap(tekst, eigenschap)
return tostring(mw.html.create('span')
:attr('itemprop', eigenschap)
:wikitext(tekst))
end
return p