Diff: Module:Asbox
Comparing revision #1 (2021-08-19 05:19:44) with revision #2 (2023-02-06 04:50:59).
| Old | New |
|---|---|
--[[ |
--[[ |
This module was created by User:CodeHydro (Alexander Zhikun He). |
This module was created by User:CodeHydro (Alexander Zhikun He). |
User:Jackmcbarn and User:Mr._Stradivarius provided a great deal of assistance in writting p.main() |
User:Jackmcbarn and User:Mr._Stradivarius provided a great deal of assistance in writting p.main() |
p.main() draw heavily from the following version of Template:Asbox of the English iWiki, authored primarily by User:Rich_Farmbrough |
p.main() draw heavily from the following version of Template:Asbox of the English iWiki, authored primarily by User:Rich_Farmbrough |
https://en.iWiki.org/w/index.php?title=Template:Asbox&oldid=619510287 |
https://en.iWiki.org/w/index.php?title=Template:Asbox&oldid=619510287 |
p.templatepage() is derived from the following revision of Template:Asbox/templatepage, authored primarily by User:MSGJ |
p.templatepage() is derived from the following revision of Template:Asbox/templatepage, authored primarily by User:MSGJ |
https://en.iWiki.org/w/index.php?title=Template:Asbox/templatepage&oldid=632914791 |
https://en.iWiki.org/w/index.php?title=Template:Asbox/templatepage&oldid=632914791 |
Both templates had significant contributions from numerous others listed in the revision history tab of their respective pages. |
Both templates had significant contributions from numerous others listed in the revision history tab of their respective pages. |
--]] |
--]] |
local WRAPPER_TEMPLATE, args = 'Template:Asbox' |
local WRAPPER_TEMPLATE, args = 'Template:Asbox' |
local templatestyles = 'Asbox/styles.css' |
local templatestyles = 'Asbox/styles.css' |
local p, Buffer, stubCats = { |
local p, Buffer, stubCats = { |
--Prevents dupli-cats... get it? Maybe not? |
--Prevents dupli-cats... get it? Maybe not? |
cats = setmetatable({}, {__newindex = function(t, i, v) |
cats = setmetatable({}, {__newindex = function(t, i, v) |
if not rawget(t, i) then |
if not rawget(t, i) then |
rawset(t, i, v) |
rawset(t, i, v) |
table.insert(t, i) |
table.insert(t, i) |
end |
end |
end}), |
end}), |
--initializes variables required by both p.main and p.templatepage |
--initializes variables required by both p.main and p.templatepage |
init = function(self, frame, page) |
init = function(self, frame, page) |
args, page = args or require('Module:Arguments').getArgs(frame, { |
args, page = args or require('Module:Arguments').getArgs(frame, { |
wrappers = WRAPPER_TEMPLATE |
wrappers = WRAPPER_TEMPLATE |
}), page or mw.title.getCurrentTitle() |
}), page or mw.title.getCurrentTitle() |
--Ensures demo parameter will never affect category() output for articles |
--Ensures demo parameter will never affect category() output for articles |
self.demo = self.demo or page.namespace ~= 0 and args.demo |
self.demo = self.demo or page.namespace ~= 0 and args.demo |
return args, page |
return args, page |
end |
end |
}, require('Module:Buffer') |
}, require('Module:Buffer') |
--[[ |
--[[ |
Formats category links. Stores them until called with cat.done=true |
Formats category links. Stores them until called with cat.done=true |
Takes multiple or single categories in the form of 'cat' |
Takes multiple or single categories in the form of 'cat' |
or a table of strings and/or tables containing parts. (See below) |
or a table of strings and/or tables containing parts. (See below) |
]] |
]] |
local attention, catTag, catKey = Buffer'Stub message templates needing attention', '[[Category:%s]]', '%s|%s%s' |
local attention, catTag, catKey = Buffer'Stub message templates needing attention', '[[Category:%s]]', '%s|%s%s' |
local function category(cat) |
local function category(cat) |
for _, v in ipairs((tostring(cat) == cat or cat.t) and {cat} or cat) do |
for _, v in ipairs((tostring(cat) == cat or cat.t) and {cat} or cat) do |
--[[ |
--[[ |
If v is a table: |
If v is a table: |
[1] = full category name; defaults to local attention if blank |
[1] = full category name; defaults to local attention if blank |
k = Category sort key. Prefix before v.t |
k = Category sort key. Prefix before v.t |
t = page.text or args.tempsort#; appended after k (or in its place if omitted). Required if v is not a string |
t = page.text or args.tempsort#; appended after k (or in its place if omitted). Required if v is not a string |
Basically the same as v = (v[1] or attention) .. ' | ' .. (v.k or '') .. v.t |
Basically the same as v = (v[1] or attention) .. ' | ' .. (v.k or '') .. v.t |
]] |
]] |
if v and v ~= true then--reject v = nil, false, or true |
if v and v ~= true then--reject v = nil, false, or true |
p.cats[catTag:format(tostring(v) == v and |
p.cats[catTag:format(tostring(v) == v and |
v |
v |
or (v[1] and Buffer(v[1]) or attention):_in(v.k):_(v.t):_str(2, nil, nil, '|') |
or (v[1] and Buffer(v[1]) or attention):_in(v.k):_(v.t):_str(2, nil, nil, '|') |
)] = true |
)] = true |
end |
end |
end |
end |
return cat.done and table.concat(p.cats, p.demo and ' | ' or nil) or '' |
return cat.done and table.concat(p.cats, p.demo and ' | ' or nil) or '' |
end |
end |
--[[ |
--[[ |
Makes an ombox warning; |
Makes an ombox warning; |
Takes table {ifNot = Boolean, text, {cat. sort key, cat. sort name}} |
Takes table {ifNot = Boolean, text, {cat. sort key, cat. sort name}} |
Will return an empty string instead when ifNot evaluates to true |
Will return an empty string instead when ifNot evaluates to true |
]] |
]] |
local function ombox(v) |
local function ombox(v) |
if v.ifNot then return end |
if v.ifNot then return end |
p.ombox = p.ombox or require('Module:Message box').ombox |
p.ombox = p.ombox or require('Module:Message box').ombox |
category{v[2]} |
category{v[2]} |
return p.ombox{ |
return p.ombox{ |
type = 'content', |
type = 'content', |
text = v[1] |
text = v[1] |
} |
} |
end |
end |
--[[ |
--[[ |
Unlike original template, module now takes unlimited cats! This function also performs |
Unlike original template, module now takes unlimited cats! This function also performs |
most stub category error checks except for the ombox for when main |category= is omitted (See p.template()) |
most stub category error checks except for the ombox for when main |category= is omitted (See p.template()) |
]] |
]] |
local function catStub(page, pageDoc) |
local function catStub(page, pageDoc) |
stubCats = {missing = {}, v = {}} |
stubCats = {missing = {}, v = {}} |
-- zwj and zwnj have semantical use in other other wikis, don't remove them |
-- zwj and zwnj have semantical use in other other wikis, don't remove them |
local zwj = '\226\128\141' -- U+200D, E2 80 8D |
local zwj = '\226\128\141' -- U+200D, E2 80 8D |
local zwnj = '\226\128\140' -- U+200C, E2 80 8C |
local zwnj = '\226\128\140' -- U+200C, E2 80 8C |
local disallowedUnicodeChars = '[^%w%p%s' .. zwj .. zwnj .. ']' -- for i18n we make this a separate string |
local disallowedUnicodeChars = '[^%w%p%s' .. zwj .. zwnj .. ']' -- for i18n we make this a separate string |
local code |
local code |
for k, _ in pairs(args) do |
for k, _ in pairs(args) do |
--Find category parameters and store the number (main cat = '') |
--Find category parameters and store the number (main cat = '') |
table.insert(stubCats, string.match(k, '^category(%d*)$')) |
table.insert(stubCats, string.match(k, '^category(%d*)$')) |
end |
end |
table.sort(stubCats) |
table.sort(stubCats) |
for k, v in ipairs(stubCats) do |
for k, v in ipairs(stubCats) do |
--Get category names and, if called by p.templatepage, the optional sort key |
--Get category names and, if called by p.templatepage, the optional sort key |
local tsort, cat = args['tempsort' .. v], mw.ustring.gsub(args['category' .. v], disallowedUnicodeChars, '')--remove all hidden unicode chars |
local tsort, cat = args['tempsort' .. v], mw.ustring.gsub(args['category' .. v], disallowedUnicodeChars, '')--remove all hidden unicode chars |
--Do not place template in main category if |tempsort = 'no'. However, DO place articles of that template in the main category. |
--Do not place template in main category if |tempsort = 'no'. However, DO place articles of that template in the main category. |
table.insert(stubCats.v, |
table.insert(stubCats.v, |
page and (--p.templatepage passes page; p.main does not, i.e. articles are categorized without sort keys. |
page and (--p.templatepage passes page; p.main does not, i.e. articles are categorized without sort keys. |
v=='' and tsort == 'no'--if true, inserts 'true' in table, which category() will reject |
v=='' and tsort == 'no'--if true, inserts 'true' in table, which category() will reject |
or tsort and {cat, k = ' ', t = tsort} |
or tsort and {cat, k = ' ', t = tsort} |
or {cat, k = ' *', t = page.text}--note space in front of sort key |
or {cat, k = ' *', t = page.text}--note space in front of sort key |
) |
) |
or cat |
or cat |
) |
) |
--Check category existance only if on the template page (i.e. stub documentation) |
--Check category existance only if on the template page (i.e. stub documentation) |
if page then |
if page then |
if not mw.title.new('Category:' .. cat).exists then |
if not mw.title.new('Category:' .. cat).exists then |
code = code or mw.html.create'code':wikitext'|category' |
code = code or mw.html.create'code':wikitext'|category' |
table.insert(stubCats.missing, tostring(mw.clone(code):wikitext(v))) |
table.insert(stubCats.missing, tostring(mw.clone(code):wikitext(v))) |
end |
end |
--[[ |
--[[ |
Checks non-demo stub template for documentation and flags if doc is present. |
Checks non-demo stub template for documentation and flags if doc is present. |
All stub cats names are checked and flagged if it does not match 'Category: [] stub'. |
All stub cats names are checked and flagged if it does not match 'Category: [] stub'. |
The main stub cat is exempt from the name check if the stub template has its own doc |
The main stub cat is exempt from the name check if the stub template has its own doc |
(presumably, this doc would have an explanation as to why the main stub cat is non-conforming). |
(presumably, this doc would have an explanation as to why the main stub cat is non-conforming). |
]] |
]] |
table.insert(stubCats.v, v == '' and not p.demo and pageDoc.exists and |
table.insert(stubCats.v, v == '' and not p.demo and pageDoc.exists and |
'Stub message templates with documentation subpages' |
'Stub message templates with documentation subpages' |
or not cat:match' stubs$' and {k = 'S', t = page.text} |
or not cat:match' stubs$' and {k = 'S', t = page.text} |
) |
) |
end |
end |
end |
end |
--Add category names after loop is completed |
--Add category names after loop is completed |
category(stubCats.v) |
category(stubCats.v) |
return #stubCats.missing > 0 and ombox{ |
return #stubCats.missing > 0 and ombox{ |
--Changed, original msg: |
--Changed, original msg: |
--One or more of the stub categories defined in this template do not seem to exist! |
--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}}. |
--Please double-check the parameters {{para|category}}, {{para|category1}} and {{para|category2}}. |
'The following parameter' |
'The following parameter' |
.. (#stubCats.missing == 1 and ' defines a stub category that does' or 's define stub categories that do') |
.. (#stubCats.missing == 1 and ' defines a stub category that does' or 's define stub categories that do') |
.. ' not exist: ' .. mw.text.listToText(stubCats.missing), |
.. ' not exist: ' .. mw.text.listToText(stubCats.missing), |
{k = 'N', t = page.text} |
{k = 'N', t = page.text} |
} |
} |
end |
end |
--Shows population of categories found by catStub(). Outputs demo values if none |
--Shows population of categories found by catStub(). Outputs demo values if none |
local function population() |
local function population() |
local wikitext, base = {}, '* [[:Category:%s]] (population: %s)\n' |
local wikitext, base = {}, '* [[:Category:%s]] (population: %s)\n' |
if not args.category and stubCats[1] ~= false then |
if not args.category and stubCats[1] ~= false then |
table.insert(stubCats, 1, false) |
table.insert(stubCats, 1, false) |
end |
end |
for _, v in ipairs(stubCats) do |
for _, v in ipairs(stubCats) do |
table.insert(wikitext, base:format( |
table.insert(wikitext, base:format( |
v and args['category' .. v] or '{{{category}}}', |
v and args['category' .. v] or '{{{category}}}', |
v and mw.site.stats.pagesInCategory(args['category' .. v], 'all') or 0 |
v and mw.site.stats.pagesInCategory(args['category' .. v], 'all') or 0 |
)) |
)) |
end |
end |
return table.concat(wikitext) |
return table.concat(wikitext) |
end |
end |
--Includes standard stub documention and flags stub templates with bad parameter values. |
--Includes standard stub documention and flags stub templates with bad parameter values. |
function p.templatepage(frame, page) |
function p.templatepage(frame, page) |
args, page = p:init(frame, page) |
args, page = p:init(frame, page) |
local tStubDoc = mw.title.new'Template:Stub documentation' |
local tStubDoc = mw.title.new'Template:Stub documentation' |
local pageDoc = page:subPageTitle('doc') |
local pageDoc = page:subPageTitle('doc') |
--Reorganization note: Original Asbox alternates between outputting categories and checking on params |category#=. |
--Reorganization note: Original Asbox alternates between outputting categories and checking on params |category#=. |
--Rather than checking multiple times and switching tasks, all stub category param operations have been rolled into catStub() |
--Rather than checking multiple times and switching tasks, all stub category param operations have been rolled into catStub() |
return Buffer( |
return Buffer( |
ombox{--Show ombox warnings for missing args. |
ombox{--Show ombox warnings for missing args. |
ifNot = args.category, |
ifNot = args.category, |
'The <code>|category</code> parameter is not set. Please add an appropriate stub category.', |
'The <code>|category</code> parameter is not set. Please add an appropriate stub category.', |
{k = 'C', t = page.text} |
{k = 'C', t = page.text} |
}) |
}) |
:_(ombox{ |
:_(ombox{ |
ifNot = args.subject or args.article or args.qualifier, |
ifNot = args.subject or args.article or args.qualifier, |
'This stub template contains no description! At least one of the parameters <code>|subject</code>, <code>|article</code> or <code>|qualifier</code> must be defined.', |
'This stub template contains no description! At least one of the parameters <code>|subject</code>, <code>|article</code> or <code>|qualifier</code> must be defined.', |
{k = 'D', t = page.text} |
{k = 'D', t = page.text} |
}) |
}) |
:_(catStub(page, pageDoc))--catStub() may also return an ombox if there are non-existing categories |
:_(catStub(page, pageDoc))--catStub() may also return an ombox if there are non-existing categories |
:_(category{ |
:_(category{ |
done = p.demo ~= 'doc',--Outputs categories if not doc demo |
done = p.demo ~= 'doc',--Outputs categories if not doc demo |
'Stub message templates', |
'Stub message templates', |
args.icon and |
args.icon and |
'Stub message templates using icon parameter' |
'Stub message templates using icon parameter' |
or args.image and ( |
or args.image and ( |
mw.title.new('Media:' .. mw.text.split(args.image, '|')[1]).exists--do nothing if exists. category() will reject true |
mw.title.new('Media:' .. mw.text.split(args.image, '|')[1]).exists--do nothing if exists. category() will reject true |
or {k = 'B', t = page.text} |
or {k = 'B', t = page.text} |
) |
) |
or 'Stub message templates without images', |
or 'Stub message templates without images', |
args.imagealt and {k = 'I', t = page.text}, |
args.imagealt and {k = 'I', t = page.text}, |
}) |
}) |
:_((not p.demo or p.demo == 'doc') and--Add standard stub template documentation |
:_((not p.demo or p.demo == 'doc') and--Add standard stub template documentation |
require('Module:Documentation').main{ |
require('Module:Documentation').main{ |
content = Buffer(page.text ~= 'Stub' and--This comparison performed in {{Asbox/stubtree}} before it invokes Module:Asbox stubtree |
content = Buffer(page.text ~= 'Stub' and--This comparison performed in {{Asbox/stubtree}} before it invokes Module:Asbox stubtree |
require('Module:Asbox stubtree').subtree{args = {pagename = page.text}} |
require('Module:Asbox stubtree').subtree{args = {pagename = page.text}} |
) |
) |
:_in'\n== About this template ==\nThis template is used to identify a':_(args.subject):_'stub':_(args.qualifier):_out' '--space |
:_in'\n== About this template ==\nThis template is used to identify a':_(args.subject):_'stub':_(args.qualifier):_out' '--space |
:_'. It uses {{[[Template:Asbox|asbox]]}}, which is a meta-template designed to ease the process of creating and maintaining stub templates.\n=== Usage ===\nTyping ' |
:_'. It uses {{[[Template:Asbox|asbox]]}}, which is a meta-template designed to ease the process of creating and maintaining stub templates.\n=== Usage ===\nTyping ' |
:_(mw.html.create'code' |
:_(mw.html.create'code' |
:wikitext('{{', page.text == 'Stub' and 'stub' or page.text, '}}') |
:wikitext('{{', page.text == 'Stub' and 'stub' or page.text, '}}') |
) |
) |
:_' produces the message shown at the beginning, and adds the article to the following categor' |
:_' produces the message shown at the beginning, and adds the article to the following categor' |
:_(#stubCats > 1 and 'ies' or 'y') |
:_(#stubCats > 1 and 'ies' or 'y') |
:_':\n' |
:_':\n' |
:_(population()) |
:_(population()) |
:_(pageDoc.exists and--transclusion of /doc if it exists |
:_(pageDoc.exists and--transclusion of /doc if it exists |
frame:expandTemplate{title = pageDoc.text} |
frame:expandTemplate{title = pageDoc.text} |
) |
) |
:_'\n== General information ==\n' |
:_'\n== General information ==\n' |
:_(frame:expandTemplate{title = tStubDoc.text}) |
:_(frame:expandTemplate{title = tStubDoc.text}) |
:_'\n\n'(), |
:_'\n\n'(), |
['link box'] = Buffer'This documentation is automatically generated by [[Module:Asbox]].' |
['link box'] = Buffer'This documentation is automatically generated by [[Module:Asbox]].' |
:_in'The general information is transcluded from [[Template:Stub documentation]]. ' |
:_in'The general information is transcluded from [[Template:Stub documentation]]. ' |
:_(mw.html.create'span' |
:_(mw.html.create'span' |
:cssText'font-size:smaller;font-style:normal;line-height:130%' |
:cssText'font-size:smaller;font-style:normal;line-height:130%' |
:node(('([%s edit] | [%s history])'):format( |
:node(('([%s edit] | [%s history])'):format( |
tStubDoc:fullUrl('action=edit', 'relative'), |
tStubDoc:fullUrl('action=edit', 'relative'), |
tStubDoc:fullUrl('action=history', 'relative') |
tStubDoc:fullUrl('action=history', 'relative') |
)) |
)) |
) |
) |
:_out() |
:_out() |
:_(page.protectionLevels.edit and page.protectionLevels.edit[1] == 'sysop' and |
:_(page.protectionLevels.edit and page.protectionLevels.edit[1] == 'sysop' and |
"This template is [[WP:PROTECT|fully protected]] and any [[WP:CAT|categories]] should be added to the template's [" |
"This template is [[WP:PROTECT|fully protected]] and any [[WP:CAT|categories]] should be added to the template's [" |
.. pageDoc:fullUrl('action=edit&preload=Template:Category_interwiki/preload', 'relative') |
.. pageDoc:fullUrl('action=edit&preload=Template:Category_interwiki/preload', 'relative') |
.. '| /doc] subpage, which is not protected.' |
.. '| /doc] subpage, which is not protected.' |
)' <br/>' |
)' <br/>' |
} |
} |
)() |
)() |
end |
end |
function p.main(frame, page) |
function p.main(frame, page) |
args, page = p:init(frame, page) |
args, page = p:init(frame, page) |
local output = mw.html.create'div' |
local output = mw.html.create'div' |
:attr{role = 'note'} |
:attr{role = 'note'} |
:addClass'metadata plainlinks asbox stub' |
:addClass'metadata plainlinks asbox stub' |
:tag'table' |
:tag'table' |
:attr{role = 'presentation'} |
:attr{role = 'presentation'} |
:tag'tr' |
:tag'tr' |
:addClass'noresize' |
:addClass'noresize' |
:node((args.icon or args.image) and |
:node((args.icon or args.image) and |
mw.html.create'td' |
mw.html.create'td' |
:wikitext(args.icon or ('[[File:%s|%spx|alt=%s]]'):format( |
:wikitext(args.icon or ('[[File:%s|%spx|alt=%s]]'):format( |
args.image or '', |
args.image or '', |
args.pix or '40x30', |
args.pix or '40x30', |
args.imagealt or 'Stub icon' |
args.imagealt or 'Stub icon' |
)) |
)) |
) |
) |
:tag'td' |
:tag'td' |
:tag'p' |
:tag'p' |
:addClass'asbox-body' |
:addClass'asbox-body' |
:wikitext( |
:wikitext( |
Buffer'This':_(args.subject):_(args.article or 'article'):_(args.qualifier)' ',--space |
Buffer'This':_(args.subject):_(args.article or 'article'):_(args.qualifier)' ',--space |
' is a [[iWiki:stub|stub]]. You can help iWiki by [', |
' is a [[iWiki:stub|stub]]. You can help iWiki by [', |
page:fullUrl('action=edit', 'relative'), |
page:fullUrl('action=edit', 'relative'), |
' expanding it].' |
' expanding it].' |
) |
) |
:done() |
:done() |
:node(args.note and |
:node(args.note and |
mw.html.create() |
mw.html.create() |
:tag'p' |
:tag'p' |
:addClass'asbox-note' |
:addClass'asbox-note' |
:wikitext(args.note) |
:wikitext(args.note) |
:done() |
:done() |
) |
) |
:allDone() |
:allDone() |
:node(args.name and |
:node(args.name and |
require'Module:Navbar'._navbar{ |
require'Module:Navbar'._navbar{ |
args.name, |
args.name, |
mini = 'yes', |
mini = 'yes', |
} |
} |
) |
) |
--[[ |
--[[ |
Stub categories for templates include a sort key; this ensures that all stub tags appear at the beginning of their respective categories. |
Stub categories for templates include a sort key; this ensures that all stub tags appear at the beginning of their respective categories. |
Articles using the template do not need a sort key since they have unique names. |
Articles using the template do not need a sort key since they have unique names. |
When p.demo equals 'doc', the demo stub categories will appear as those for a stub template. |
When p.demo equals 'doc', the demo stub categories will appear as those for a stub template. |
Otherwise, any non-nil p.demo will emulate article space categories (plus any error cats unless set to 'art') |
Otherwise, any non-nil p.demo will emulate article space categories (plus any error cats unless set to 'art') |
]] |
]] |
if page.namespace == 0 then -- Main namespace |
if page.namespace == 0 then -- Main namespace |
category'All stub articles' |
category'All stub articles' |
catStub() |
catStub() |
elseif p.demo then |
elseif p.demo then |
if p.demo ~= 'doc' then catStub() end |
if p.demo ~= 'doc' then catStub() end |
--Unless p.demo is set to 'art', it will also include error categories normally only shown on |
--Unless p.demo is set to 'art', it will also include error categories normally only shown on |
--the template but not in the article. The elseif after namespace == 0 means demo cats will never show in article space. |
--the template but not in the article. The elseif after namespace == 0 means demo cats will never show in article space. |
p.demodoc = p.demo ~= 'art' and p.templatepage(frame, page) |
p.demodoc = p.demo ~= 'art' and p.templatepage(frame, page) |
output = mw.html.create() |
output = mw.html.create() |
:node(output) |
:node(output) |
:tag'small':wikitext( |
:tag'small':wikitext( |
'Demo categories: ', |
'Demo categories: ', |
(category{done = true}:gsub('(%[%[)(Category:)([^|%]]-)(%|)', '%1%2%3|%2%3%4'):gsub('(%[%[)(Category:)', '%1:%2')) |
(category{done = true}:gsub('(%[%[)(Category:)([^|%]]-)(%|)', '%1%2%3|%2%3%4'):gsub('(%[%[)(Category:)', '%1:%2')) |
):done() |
):done() |
:wikitext(p.demo == 'doc' and p.demodoc or nil) |
:wikitext(p.demo == 'doc' and p.demodoc or nil) |
else |
else |
--Checks for valid name; emulates original template's check using {{FULLPAGENAME:{{{name|}}}}} |
--Checks for valid name; emulates original template's check using {{FULLPAGENAME:{{{name|}}}}} |
local normalizedName = mw.title.new(args.name or '') |
local normalizedName = mw.title.new(args.name or '') |
if normalizedName and normalizedName.fullText == page.fullText then |
if normalizedName and normalizedName.fullText == page.fullText then |
output = mw.html.create():node(output):wikitext(p.templatepage(frame, page)) |
output = mw.html.create():node(output):wikitext(p.templatepage(frame, page)) |
elseif not page.isSubpage and page.namespace == 10 then-- Template namespace and not a subpage |
elseif not page.isSubpage and page.namespace == 10 then-- Template namespace and not a subpage |
category{{k = args.name and 'E' or 'W', t = page.text}} |
category{{k = args.name and 'E' or 'W', t = page.text}} |
end |
end |
end |
end |
return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(output:wikitext(not p.demo and category{done = true} or nil)) |
return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(output:wikitext(not p.demo and category{done = true} or nil)) |
end |
end |
return p |
return p |