"Module:Asbox": अवतरणों में अंतर

Content deleted Content added
check the type of args keys before doing string matching on them - positional parameters have numeric keys, and attempts to do string matching on them will result in an error
imported>Codehydro
Added Asbox/templatepage
पंक्ति 1:
local WRAPPER_TEMPLATE = 'Template:Asbox'
local p = {}
local WRAPPER_TEMPLATE = 'Template:Asbox'
local args, msgBox
 
 
function category(cat, name)
local result = ''
if type(cat) == type'' then
cat = {cat}
end
for _, v in ipairs(cat) do
v = (#v > 1 and '' or 'Stub message templates needing attention|') .. v
result = result .. ('[[Category:' .. v .. (name or '') .. ']]')
end
return result
end
 
function ombox(catSort, text, name)
msgBox = msgBox or require('Module:Message box')
return msgBox.ombox{
type = 'content',
text = mw.getCurrentFrame():preprocess(text)
}
.. category(catSort, name)
end
 
function stubCats(page, tempsort)
local wikitext, missingCats, hasDoc = '', 0
for k, v in pairs(args) do
if type(k) == 'string' then
p.catNum = string.match(k, '^category(%d*)$')
wikitext = wikitext .. (
tempsort == 'no' and p.catNum == '' and ''
or (p.catNum and
category{v .. (page and --Note: p.templatepage passes page; p.main does not
('|' .. (args['tempsort' .. p.catNum]
or ('*' .. page.text)
))
or ''
)}
)
or ''
)
if page and p.catNum then
missingCats = missingCats + mw.getCurrentFrame():callParserFunction{
name = '#ifexist',
args = {'Category:' .. v, 0, 1}
}
hasDoc = false
if p.catNum == '' then
hasDoc = mw.getCurrentFrame():callParserFunction{
name = '#ifexist',
args = {page.prefixedText .. '/doc', true, false}
}
wikitext = wikitext .. (hasDoc and '[[Category:Stub message templates with documentation subpages]]' or '')
end
if not hasDoc and not string.match(v, ' stubs$') then
wikitext = wikitext .. category('S', page.text)
end
end
end
end
if missingCats > 0 then
wikitext = wikitext .. ombox(
'N',
'One or more of the stub categories defined in this template do not seem to exist! Please double-check the parameters {{para|category}}, {{para|category1}} and {{para|category2}}.'
)
end
return wikitext
end
 
function p.templatepage(frame, page)
page = page or mw.title.getCurrentTitle()
args = args or require('Module:Arguments').getArgs(frame, {
wrappers = WRAPPER_TEMPLATE
})
return category{
'Stub message templates',
'Exclude in print'
}
.. stubCats(page, args.tempsort)
.. ((args.icon and
'[[Category:Stub message templates using icon parameter]]')
or (args.image and
frame:callParserFunction{
name = '#ifexist',
args = {
'Media:' .. mw.text.split(args.image, '|')[1],
'',
category('B', page.text)
}
}
or '[[Category:Stub message templates without images]]'
)
)
.. (args.imagealt and
category('I', page.text)
or ''
)
.. (args.category and
''
or ombox(
'C',
'The {{para|category}} parameter is not set. Please add an appropriate stub category.',
page.text
)
)
.. ((args.subject or args.article or args.qualifier) and
''
or ombox(
'D',
'This stub template contains no description! At least one of the parameters {{para|subject}}, {{para|article}} or {{para|qualifier}} must be defined.',
page.text
)
)
-- Note: Original Asbox/templatepage checks for valid category names and whether they exist here.
-- Module has already done these at the first call of stubCats, avoiding a repeat checking if category# args are set.
end
 
function p.main(frame, page)
page = page or mw.title.getCurrentTitle()
local args = args or require('Module:Arguments').getArgs(frame, {
wrappers = WRAPPER_TEMPLATE
})
local output = mw.html.create('table')
local asbox = output:tag'table'
:addClass('metadata plainlinks stub')
:css('background', 'transparent')
:attr('role', 'presentation')
if args.icon or args.image then
asbox:tag('td'):wikitext(args.icon or string.format(
output
'[[File:%s|%spx|alt=%s]]',
:tag('td'):wikitext(args.icon or string.format(
args.image,
'[[File:%s|%spx|alt=%s]]',
args.imagepix or '40x30',
args.piximagealt or '40x30Stub icon',
))
args.imagealt or 'Stub icon'
))
end
local buffer = outputasbox:tag('td')
buffer:tag('i'):wikitext(string.format(
buffer
'This %s %s %s is a [[Wikipedia:stub|stub]]. You can help Wikipedia by [%s expanding it].',
:tag('i')
args.subject or '',
:wikitext(string.format(
args.article or 'article',
'This %s %s %s is a [[Wikipedia:stub|stub]]. You can help Wikipedia by [%s expanding it].',
args.subjectqualifier or '',
page:fullUrl('action=edit', 'relative')
args.article or 'article',
))
args.qualifier or '',
page:fullUrl('action=edit', 'relative')
))
if args.name then
buffer:wikitext(require('Module:Navbar')._navbar{
buffer
args.name,
:wikitext(require('Module:Navbar')._navbar{
args.namemini = 'yes',
style = 'position: absolute; right: 15px; display: none;'
mini = 'yes',
})
style = 'position: absolute; right: 15px; display: none;'
})
end
if args.note then
buffer:tag('br')
buffer:tag('span')
:tagcss('spanfont-style', 'normal')
:css('font-stylesize', 'normalsmaller')
:wikitext(args.note)
:css('font-size', 'smaller')
:wikitext(args.note)
end
output = tostring(output)
if page.namespace == 0 then -- Main namespace
output = output ..
:wikitext'[[Category:All stub articles]]'
:wikitext(stubCats())
for k,v in pairs(args) do
elseif not args.demo and page.basePageTitle ~= WRAPPER_TEMPLATE then
if type(k) == 'string' and 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. This is intentional and matches the results of original {{FULLPAGENAME:{{{name|}}}}}
if mw.title.new(args.name or '') == page then
output:wikitext(p.templatepage())
-- 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 page.isSubpage and page.namespace == 10 then -- Template namespace and not a subpage
output = output .. :wikitext(string.format(
'[[Category:Stub message templates needing attention|%s]]',
(args.name and 'E' or 'W') .. page.text
))
end
end
"https://hi.wikipedia.org/wiki/Module:Asbox" से प्राप्त