Module:Asbox

local WRAPPER_TEMPLATE = 'Template:Asbox' local p = {}

function p._main(args, frame) local output = mw.html.create('table') local page = mw.title.getCurrentTitle output :addClass('metadata plainlinks stub') :css('background','transparent') :attr('role','presentation') if args.icon or args.image then output :tag('td'):wikitext(args.icon or string.format( '',				args.image, args.pix or '40x30', args.imagealt or 'Stub icon' ))	end local buffer = output:tag('td') buffer :tag('i') :wikitext(string.format( 'This %s %s %s is a stub. You can help Wikipedia by [%s expanding it].', args.subject or '', args.article or 'article', args.qualifier or '', page:fullUrl('action=edit', 'relative') ))	if args.name then buffer :wikitext(require('Module:Navbar')._navbar{				args.name,				mini = 'yes',				style = 'position: absolute; right: 15px; display: none;'			}) end if args.note then buffer:tag('br') buffer :tag('span') :css('font-style', 'normal') :css('font-size', 'smaller') :wikitext(args.note) end output = tostring(output) if page.namespace == 0 then -- Main namespace output = output .. ''		for k,v in pairs(args) do			if string.match(k, 'category%d*') then output = output .. string.format('', v)			end end end -- Instead of the title check you do here, see if the parent frame's title is the same as the current page's title. if not args.demo and page.basePageTitle ~= WRAPPER_TEMPLATE then --mw.title.new('') is always nil. This is intentional and matches the results of original local nameTitle = frame:getTitle if mw.title.new(args.name or '') == page then -- This can go away once you un-split main and _main, as I describe below. frame = frame or mw.getCurrentFrame -- You should probably convert Template:Asbox/templatepage to Lua too. -- Do it in this module, in a function called templatepage. output = output .. frame:expandTemplate{ title = 'Asbox/templatepage', args = args }		elseif not nameTitle.isSubpage and nameTitle.namespace == 10 then -- Template namespace and not a subpage output = output .. string.format(				'',				(args.name and 'E' or 'W') .. page.text			) end end output = frame:preprocess('') return output end

-- Having main and _main split is really only beneficial for modules that get called from other modules a lot, which this module wouldn't be. function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {		wrappers = WRAPPER_TEMPLATE	}) return p._main(args, frame) end

return p