local p = {}

function p._main(args)
	local s = args[1]
	if args[2] then
		s = mw.html.create()
			:wikitext(s .. ' ')
			:tag('br')
				:done()
			:tag(args[3] and 'div' or 'span')
				:addClass('nowrap')
				:tag('span')
					:css('vertical-align', 'top')
					:wikitext('by ')
					:done()
				:tag(args[3] and 'div' or 'span')
					:addClass('wrap')
					:addClass(args[3] and 'plainlist')
					:css('display', 'inline-block')
					-- Prevents the text from spilling out
					:css('padding-right', '1.25em')
					:wikitext(args[3] and
						'\n* ' .. table.concat(args, '\n* ', 2) .. '\n'
						or args[2])
					:done()
				:done()
	end
	return s
end

function p.main(frame)
	-- mw.clone makes table.concat possible
	return p._main(mw.clone(frame:getParent().args))
end

return p