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