Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Based on/sandbox

From Wikipedia, the free encyclopedia
local p = {}

function p.lua_main(frame)
	local s = frame.args[1]
	local indent = frame.args['indent']
		indent = indent and indent:lower() or ""
	local do_indent = indent == "yes" or indent == "y" or indent == "true" or indent == "1"
	
	if frame.args[3] then
		local args = {}

		for i, v in ipairs(frame.args) do
			if i >= 2 then
				args[#args+1] = v
			end
		end
		
		args['style'] = 'display: inline'
		args['list_style'] = 'display: inline'
		args['item1_style'] = 'display: inline'

		h = mw.html.create('div')
		h:addClass('template-based-on')
		local expanded = frame:expandTemplate{ title = 'Unbulleted list', args = args }
		if do_indent then
			s = '<div style="padding-left: 1em; text-indent: -1em;">' .. s .. '</div>'
			h:wikitext(s)
			h:wikitext('<span style="margin-left:1em;">by&nbsp;</span>')

			expanded = expanded:gsub("<li>", "<li style='padding-left: 1em;'>")
			expanded = expanded:gsub("<br />", "<br /><span style='margin-left:1em;'>")
			h:wikitext(expanded)
		else
			h:wikitext(s)
			h:tag('br')  -- h:newline() is not working for some reason
			h:wikitext('by&nbsp;')
			h:wikitext(expanded)
		end

		return h
	elseif frame.args[2] then
			if do_indent then
				s = '<div class="template-based-on" style="padding-left: 1em; text-indent: -1em;">' .. s .. '<br />by&nbsp;' .. frame.args[2] .. '</div>'
			else
				s = '<div class="template-based-on">' .. s .. '<br />by&nbsp;' .. frame.args[2] .. '</div>'
			end
		return s
	end
	
	return s
end

function p.main(frame)
	return p.lua_main(frame:getParent())
end

return p