Naar inhoud springen

Module:Multatuli idee

Uit Wikisource

Documentatie voor deze module kan aangemaakt worden op de volgende pagina: Module:Multatuli idee/doc

local p = {}

local getArgs = require('Module:Arguments').getArgs

local function maakLink(nummer)
	return '<b>' .. nummer .. '</b>'
end

local function witregelsNaarParagraven(tekst)
	tekst = string.gsub(tekst, '\n\n\n', '</p><p><br />')
	tekst = string.gsub(tekst, '\n\n', '</p><p>')
	
	return tekst
end

local function formatteerNummer(nummer)
	num, letter = string.match(nummer, '^(%d+)(%l)$')
	if num and letter then
		return '<span class="ws-multatuli-idee-nummer>' .. num .. '<span class="ws-multatuli-idee-letter">' .. letter .. '</span>. </span>'
	else
		return '<span class="ws-multatuli-idee-nummer" >' .. nummer .. '. </span>'
	end
end

function p.idee(frame)
	local args = getArgs(frame, {removeBlanks = false})

	local nummer = args['nummer'] or args[1]
	local hoofdtekst = args['hoofdtekst'] or args[2]
	local noot = args['noot'] or args[3]

	if not hoofdtekst and not noot then
		return maakLink(nummer)
	end
	
	local html = '<div class="ws-multatuli-idee" id="ws-multatuli-idee-' .. nummer .. '" >'
	
	html = html .. '<div class="ws-multatuli-idee-hoofdtekst" ><p>'
	
	html = html .. formatteerNummer(nummer)
	
	hoofdtekst = witregelsNaarParagraven(hoofdtekst)
	html = html .. hoofdtekst

	html = html .. '</p></div>'
	
	
	if noot then
		noot = witregelsNaarParagraven(noot)
		html = html .. '<div class="ws-multatuli-idee-noot" ><p>' .. noot .. '</p></div>'
	end
	
	html = html .. '</div>' .. frame:expandTemplate{ title = 'lijn', args = { '3em' } }
	
	
	local style = frame:extensionTag{name = 'templatestyles', args = { src = 'Sjabloon:Multatuli idee/styles.css' }}
	return style .. html
end

function p.ideeStart(frame)
	local args = getArgs(frame, {removeBlanks = false})

	local nummer = args['nummer'] or args[1]
	local hoofdtekst = args['hoofdtekst'] or args[2]
	local noot = args['noot'] or args[3]
	
	local namespace = args['namespace'] or mw.title.getCurrentTitle().nsText

	hoofdtekst = witregelsNaarParagraven(hoofdtekst)

	local html =
			'<div class="ws-multatuli-idee" id="ws-multatuli-idee-' .. nummer .. '" >'
				.. '<div class="ws-multatuli-idee-hoofdtekst" >'
					.. '<p>'
						.. formatteerNummer(nummer)
						.. hoofdtekst
	
	if noot and #noot > 0 then
		-- als er op deze Pagina al een noot begint, sluiten we eerst de hoofdtekst af,
		-- en beginnen we de noot.
		noot = witregelsNaarParagraven(noot)
		html = html
					.. '</p>'
				.. '</div>'
				.. '<div class="ws-multatuli-idee-noot" >'
					.. '<p>'
						.. noot
	end

	if namespace == 'Pagina' then
		-- Als laatste: als we in Pagina namespace zijn, sluiten we hier alle tags.
		html = html
					.. '</p>'
				.. '</div>'
			.. '</div>'
	end

	local style = frame:extensionTag{name = 'templatestyles', args = { src = 'Sjabloon:Multatuli idee/styles.css' }}
	return style .. html
end

function p.ideeEind(frame)
	local args = getArgs(frame, {removeBlanks = false})

	local hoofdtekst = args['hoofdtekst'] or args[2]
	local noot = args['noot'] or args[3]
	
	local namespace = args['namespace'] or mw.title.getCurrentTitle().nsText
	
	local html = ''
	
	if hoofdtekst and #hoofdtekst > 0 then
		-- eerst alles openen als we in Pagina namespace zitten:
		if namespace == 'Pagina' then
			html = html
			.. '<div class="ws-multatuli-idee" >'
				.. '<div class="ws-multatuli-idee-hoofdtekst" >'
					.. '<p>'
		end
		
		-- Hoofdtekst was nog niet af, dus:
		hoofdtekst = witregelsNaarParagraven(hoofdtekst)
		html = html
						.. hoofdtekst
					.. '</p>'
				.. '</div>'
		
		if noot and #noot > 0 then
			noot = witregelsNaarParagraven(noot)
			-- we moeten een blok voor de noten openen:
			html = html
				.. '<div class="ws-multatuli-idee-noot" >'
					.. '<p>'
						.. noot
					.. '</p>'
				.. '</div>'
		end

		html = html
			.. '</div>'

	elseif noot and #noot > 0 then
		noot = witregelsNaarParagraven(noot)
		-- als er geen hoofddeel was (we zitten dus al in de eindnoot)
		if namespace == 'Pagina' then
			html = html
			.. '<div class="ws-multatuli-idee" >'
				.. '<div class="ws-multatuli-idee-noot" >'
					.. '<p>'
		end
		
		html = html
						.. noot
					.. '</p>'
				.. '</div>'
			.. '</div>'
	end
	
	html = html .. frame:expandTemplate{ title = 'lijn', args = { '3em' } }
	
	local style = ''
	if namespace == 'Pagina' then
		style = frame:extensionTag{name = 'templatestyles', args = { src = 'Sjabloon:Multatuli idee/styles.css' }}
	end
	return style .. html
end

return p