Module:Asbox: Difference between revisions
From Zoophilia Wiki
Jump to navigationJump to search
meta>Mr. Stradivarius (some formatting tweaks so that this mostly fits within 80 characters) |
meta>Mr. Stradivarius (split "Template:Asbox" out into a constant, use a more descriptive name for the args.name title object, and control for mw.title.new returning nil upon invalid page names) |
||
Line 1: | Line 1: | ||
local WRAPPER_TEMPLATE = 'Template:Asbox' | |||
local p = {} | local p = {} | ||
function p.main(frame) | function p.main(frame) | ||
local args = require('Module:Arguments').getArgs(frame, { | local args = require('Module:Arguments').getArgs(frame, { | ||
wrappers = | wrappers = WRAPPER_TEMPLATE | ||
}) | }) | ||
local output = mw.html.create('table') | local output = mw.html.create('table') | ||
Line 55: | Line 57: | ||
end | end | ||
end | end | ||
if args.demo | if args.name and not args.demo and page.basePageTitle ~= WRAPPER_TEMPLATE then | ||
local nameTitle = mw.title.new(args.name) | |||
if not nameTitle then | |||
error("invalid page name in 'name' argument", 2) | |||
elseif nameTitle == page.prefixedText then | |||
output = output .. frame:expandTemplate{ | output = output .. frame:expandTemplate{ | ||
title = 'Asbox/templatepage', | title = 'Asbox/templatepage', | ||
args = args | args = args | ||
} | } | ||
elseif not | elseif not nameTitle.isSubpage and nameTitle.namespace == 10 then -- Template namespace and not a subpage | ||
output = output .. string.format( | output = output .. string.format( | ||
'[[Category:Stub message templates needing attention|%s]]', | '[[Category:Stub message templates needing attention|%s]]', |
Revision as of 16:12, 24 December 2014
Documentation for this module may be created at Module:Asbox/doc
local WRAPPER_TEMPLATE = 'Template:Asbox' local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = WRAPPER_TEMPLATE }) local output = mw.html.create('table') local page = mw.title.getCurrentTitle() local buffer = mw.html.create('td') 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( '[[File:%s|%spx|alt=%s]]', args.image, args.pix and ('|' .. args.pix) or '40x30', args.imagealt or 'Stub icon' )) end buffer :tag('i') :wikitext(string.format( 'This %s %s %s is a [[Wikipedia:stub|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(frame:expandTemplate{title = 'navbar', args = {args.name, mini = 'yes', style = 'position: absolute; right: 15px; display: none;'}}) end if args.note then buffer :wikitext('<br />') :tag('span') :css('font-style', 'normal') :css('font-size', 'smaller') :wikitext(args.note) end output :node(buffer) output = tostring(output) if page.namespace == 0 then -- Main namespace output = output .. '[[Category:All stub articles]]' -- Instead of this loop, you should match all arg names that are category and then a number. for k = 0,2 do if args['category' .. (k > 0 and k or '')] then output = string.format('%s[[Category:%s]]', output, args['category' .. (k > 0 and k or '')]) end end end if args.name and not args.demo and page.basePageTitle ~= WRAPPER_TEMPLATE then local nameTitle = mw.title.new(args.name) if not nameTitle then error("invalid page name in 'name' argument", 2) elseif nameTitle == page.prefixedText then 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( '[[Category:Stub message templates needing attention|%s]]', (args.name and 'E' or 'W') .. page.text ) end end return output end return p