Module:Asbox: Difference between revisions
From Zoophilia Wiki
Jump to navigationJump to search
meta>Codehydro m to match Mr. Strad's style suggestion in another edit |
meta>Jackmcbarn add some more notes |
||
Line 6: | Line 6: | ||
local output = mw.html.create('table') | local output = mw.html.create('table') | ||
local page = mw.title.getCurrentTitle() | local page = mw.title.getCurrentTitle() | ||
-- Instead of creating buffer here, you should do it below. (I mention where.) | |||
local buffer = mw.html.create('td') | local buffer = mw.html.create('td') | ||
output | output | ||
Line 20: | Line 21: | ||
)) | )) | ||
end | end | ||
-- Here's where you should create buffer. You should do it as | |||
-- output:tag('td') instead of mw.html.create('td') so that you don't have | |||
-- to add it later with node. | |||
buffer | buffer | ||
:tag('i') | :tag('i') | ||
Line 38: | Line 42: | ||
end | end | ||
if args.note then | if args.note then | ||
-- mw.html knows that br is always self-closing, so you don't need to specify that. | |||
buffer:tag('br', {selfClosing = true}) | buffer:tag('br', {selfClosing = true}) | ||
buffer | buffer | ||
Line 45: | Line 50: | ||
:wikitext(args.note) | :wikitext(args.note) | ||
end | end | ||
-- When you change buffer as I described above, you won't need this anymore. | |||
output | output | ||
:node(buffer) | :node(buffer) | ||
Line 51: | Line 57: | ||
output = output .. '[[Category:All stub articles]]' | output = output .. '[[Category:All stub articles]]' | ||
for k,v in pairs(args) do | for k,v in pairs(args) do | ||
-- You should use * instead of ? here, so it will match things like category10. | |||
if string.match(k, 'category%d?') then | if string.match(k, 'category%d?') then | ||
output = output .. string.format('[[Category:%s]]', v) | output = output .. string.format('[[Category:%s]]', v) | ||
Line 56: | Line 63: | ||
end | 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 | if not args.demo and page.basePageTitle ~= WRAPPER_TEMPLATE then | ||
-- mw.title.new('') is always nil. | |||
local nameTitle = mw.title.new(args.name or '') | local nameTitle = mw.title.new(args.name or '') | ||
if nameTitle == page then | if nameTitle == page then | ||
-- This can go away once you un-split main and _main, as I describe below. | |||
frame = frame or mw.getCurrentFrame() | 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{ | output = output .. frame:expandTemplate{ | ||
title = 'Asbox/templatepage', | title = 'Asbox/templatepage', | ||
Line 74: | Line 86: | ||
end | 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) | function p.main(frame) | ||
local args = require('Module:Arguments').getArgs(frame, { | local args = require('Module:Arguments').getArgs(frame, { |
Revision as of 17:59, 24 December 2014
Documentation for this module may be created at Module:Asbox/doc
local WRAPPER_TEMPLATE = 'Template:Asbox'
local p = {}
function p._main(args, frame)
local output = mw.html.create('table')
local page = mw.title.getCurrentTitle()
-- Instead of creating buffer here, you should do it below. (I mention where.)
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 or '40x30',
args.imagealt or 'Stub icon'
))
end
-- Here's where you should create buffer. You should do it as
-- output:tag('td') instead of mw.html.create('td') so that you don't have
-- to add it later with node.
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(require('Module:Navbar')._navbar{
args.name,
mini = 'yes',
style = 'position: absolute; right: 15px; display: none;'
})
end
if args.note then
-- mw.html knows that br is always self-closing, so you don't need to specify that.
buffer:tag('br', {selfClosing = true})
buffer
:tag('span')
:css('font-style', 'normal')
:css('font-size', 'smaller')
:wikitext(args.note)
end
-- When you change buffer as I described above, you won't need this anymore.
output
:node(buffer)
output = tostring(output)
if page.namespace == 0 then -- Main namespace
output = output .. '[[Category:All stub articles]]'
for k,v in pairs(args) do
-- You should use * instead of ? here, so it will match things like category10.
if string.match(k, 'category%d?') then
output = output .. string.format('[[Category:%s]]', 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.
local nameTitle = mw.title.new(args.name or '')
if nameTitle == 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(
'[[Category:Stub message templates needing attention|%s]]',
(args.name and 'E' or 'W') .. page.text
)
end
end
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