文档图示Mô khối văn đương[Tra khán] [Biên tập] [Lịch sử] [Thanh trừ hoãn tồn]

Sử dụng phương pháp

Thỉnh tham khảo {{Asbox}} mô bản.

Truy tung phân loại

--[[
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()

p.main() draw heavily from the following version of Template:Asbox of the English Wikipedia, authored primarily by User:Rich_Farmbrough
https://en.wikipedia.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
https://en.wikipedia.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.
--]]
localWRAPPER_TEMPLATE,args='Template:Asbox'
localp,Buffer,stubCats={
--Prevents dupli-cats... get it? Maybe not?
cats=setmetatable({},{__newindex=function(t,i,v)
ifnotrawget(t,i)then
rawset(t,i,v)
table.insert(t,i)
end
end}),
--initializes variables required by both p.main and p.templatepage
init=function(self,frame,page)
args,page=argsorrequire('Module:Arguments').getArgs(frame,{
wrappers=WRAPPER_TEMPLATE
}),pageormw.title.getCurrentTitle()
--Ensures demo parameter will never affect category() output for articles
self.demo=self.demoorpage.namespace~=0andargs.demo
returnargs,page
end
},require('Module:Buffer')

--[[
Formats category links. Stores them until called with cat.done=true
Takes multiple or single categories in the form of 'cat'
or a table of strings and/or tables containing parts. (See below)
]]
localattention,catTag,catKey=Buffer' nhu yếu quan chú đích tiểu tác phẩm tấn tức mô bản ','[[Category:%s]]','%s|%s%s'
localfunctioncategory(cat)
for_,vinipairs((tostring(cat)==catorcat.t)and{cat}orcat)do
--[[
If v is a table:
[1] = full category name; defaults to local attention if blank
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
Basically the same as v = (v[1] or attention).. ' | '.. (v.k or '').. v.t
]]
ifvandv~=truethen--reject v = nil, false, or true
p.cats[catTag:format(tostring(v)==vand
v
or(v[1]andBuffer(v[1])orattention):_in(v.k):_(v.t):_str(2,nil,nil,'|')
)]=true
end
end
returncat.doneandtable.concat(p.cats,p.demoand' | 'ornil)or''
end

--[[
Makes an ombox warning;
Takes table {ifNot = Boolean, text, {cat. sort key, cat. sort name}}
Will return an empty string instead when ifNot evaluates to true
]]
localfunctionombox(v)
ifv.ifNotthenreturnend
p.ombox=p.omboxorrequire('Module:Message box').ombox
category{v[2]}
returnp.ombox{
type='content',
text=v[1]
}
end

--[[
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())
]]
localfunctioncatStub(page,pageDoc)
stubCats={missing={},v={}}
localcode
fork,_inpairs(args)do
--Find category parameters and store the number (main cat = '')
table.insert(stubCats,string.match(k,'^category(%d*)$'))
end
table.sort(stubCats)
fork,vinipairs(stubCats)do
--Get category names and, if called by p.templatepage, the optional sort key
localtsort,cat=args['tempsort'..v],mw.ustring.gsub(args['category'..v],'[^%w%p%s]','')--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.
table.insert(stubCats.v,
pageand(--p.templatepage passes page; p.main does not, i.e. articles are categorized without sort keys.
v==''andtsort=='no'--if true, inserts 'true' in table, which category() will reject
ortsortand{cat,k=' ',t=tsort}
or{cat,k=' *',t=page.text}--note space in front of sort key
)
orcat
)
--Check category existance only if on the template page (i.e. stub documentation)
ifpagethen
ifnotmw.title.new('Category:'..cat).existsthen
code=codeormw.html.create'code':wikitext'|category'
table.insert(stubCats.missing,tostring(mw.clone(code):wikitext(v)))
end
--[[
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'.
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).
]]
table.insert(stubCats.v,v==''andnotp.demoandpageDoc.existsand
' hàm hữu văn kiện tử hiệt diện đích tiểu tác phẩm tấn tức mô bản '
ornotcat:match' tiểu tác phẩm $'and{k='S',t=page.text}
)
end
end
--Add category names after loop is completed
category(stubCats.v)
return#stubCats.missing>0andombox{
--Changed, original msg:
--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}}.
' thiết định đích giá ta tiểu tác phẩm loại biệt bất tồn tại: '..mw.text.listToText(stubCats.missing),
{k='N',t=page.text}
}
end

--Shows population of categories found by catStub(). Outputs demo values if none
localfunctionpopulation()
localwikitext,base={},'* [[:Category:%s]] ( hiệt diện sổ: %s )\n'
ifnotargs.categoryandstubCats[1]~=falsethen
table.insert(stubCats,1,false)
end
for_,vinipairs(stubCats)do
table.insert(wikitext,base:format(
vandargs['category'..v]or'{{{category}}}',
vandmw.site.stats.pagesInCategory(args['category'..v],'all')or0
))
end
returntable.concat(wikitext)
end

--Includes standard stub documention and flags stub templates with bad parameter values.
functionp.templatepage(frame,page)
args,page=p:init(frame,page)
localtStubDoc=mw.title.new'Template:Stub documentation'
localpageDoc=page:subPageTitle('doc')
--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()
returnBuffer(
ombox{--Show ombox warnings for missing args.
ifNot=args.category,
' vị thiết trí <code>|category</code> tham sổ. Thỉnh gia nhập nhất cá thích đương đích tiểu tác phẩm phân loại. ',
{k='C',t=page.text}
})
:_(ombox{
ifNot=args.subjectorargs.articleorargs.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.',
{k='D',t=page.text}
})
:_(catStub(page,pageDoc))--catStub() may also return an ombox if there are non-existing categories
:_(category{
done=p.demo~='doc',--Outputs categories if not doc demo
' tiểu tác phẩm tấn tức mô bản ',
' bất hiển kỳ ô liệt ấn bản diện đích mô bản ',
args.iconand
' sử dụng đồ kỳ tham sổ đích tiểu tác phẩm tấn tức mô bản '
orargs.imageand(
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' một hữu đồ tượng đích tiểu tác phẩm tấn tức mô bản ',
args.imagealtand{k='I',t=page.text},
})
:_((notp.demoorp.demo=='doc')and--Add standard stub template documentation
require('Module:Documentation').main{
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}}
)
:_in'\n== quan ô bổn mô bản ==\nBổn mô bản thích dụng ':_(args.qualifier):_' đích ':_(args.subject):_' tiểu tác phẩm trung ':_out''--space
:_'. Kỳ sử dụng liễu {{[[Template:Asbox|asbox]]}} nguyên mô bản kiến lập.\n=== sử dụng phương thức ===\nTại điều mục trung thâu nhập '
:_(mw.html.create'code'
:wikitext('{{',page.text=='Stub'and'stub'orpage.text,'}}')
)
:_' tương hội tự động sinh thành tối thượng phương sở kỳ đích tiểu tác phẩm tấn tức, tịnh tương điều mục tự động gia nhập dĩ hạ hiệt diện phân loại trung '
:_':\n'
:_(population())
:_(pageDoc.existsand--transclusion of /doc if it exists
frame:expandTemplate{title=pageDoc.text}
)
:_'\n== thông dụng thuyết minh ==\n'
:_(frame:expandTemplate{title=tStubDoc.text})
:_'\n\n'(),
['link box']=Buffer' bổn -{zh-cn: Văn đương; zh-tw: Văn kiện;}- do [[Module:Asbox]] tự động sinh thành. '
:_in' thông dụng tín tức khảm nhập tự [[Template:Stub documentation]]. '
:_(mw.html.create'span'
:cssText'font-size:smaller;font-style:normal;line-height:130%'
:node(('([%s biên tập ] | [%s lịch sử ])'):format(
tStubDoc:fullUrl('action=edit','relative'),
tStubDoc:fullUrl('action=history','relative')
))
)
:_out()
:_(page.protectionLevels.editandpage.protectionLevels.edit[1]=='sysop'and
"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')
..'| /doc] subpage, which is not protected.'
)' <br/>'
}
)()
end

functionp.main(frame,page)
args,page=p:init(frame,page)
localoutput=mw.html.create'table'
:addClass'metadata plainlinks stub'
:css{background='transparent'}
:attr{role='presentation'}
:tag'tr'
:addClass'noresize'
:node((args.iconorargs.image)and
mw.html.create'td'
:wikitext(args.iconor('[[File:%s|%spx|alt=%s]]'):format(
args.imageor'',
args.pixor'40x30',
args.imagealtor' tiểu tác phẩm đồ kỳ '
))
)
:tag'td'
:css{['font-size']='smaller'}
:tag''
:wikitext(
Buffer' giá thị nhất thiên ':_(args.qualifier):_(args.qualifierand' đích '):_(args.subject)'',--space
'[[Wikipedia: Tiểu tác phẩm | tiểu tác phẩm ]]. Nâm khả dĩ -{zh-hant: Thấu quá; zh-hans: Thông quá;}-[',
page:fullUrl('action=edit','relative'),
' biên tập hoặc tu đính ] khoách sung kỳ nội dung. '
)
:done()
:node(args.nameand
require'Module:Navbar'._navbar{
args.name,
mini='yes',
style='position: absolute; right: 15px; display: none;'
}
)
:node(args.noteand
mw.html.create()
:tag'br':done()
:tag'span'
:css{['font-style']='normal',['font-size']='smaller'}
:wikitext(args.note)
:done()
)
:allDone()
--[[
Stub categories for templates include a sort key (Otherwise all will be indexed under the letter 'T' for 'Template:[] stubs')
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.
Otherwise, any non-nil p.demo will emulate article space categories (plus any error cats unless set to 'art')
]]
ifpage.namespace==0then-- Main namespace
category' toàn bộ tiểu tác phẩm '
catStub()
elseifp.demothen
ifp.demo~='doc'thencatStub()end
--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.
p.demodoc=p.demo~='art'andp.templatepage(frame,page)
output=mw.html.create()
:node(output)
:tag'small':wikitext(
'Demo categories: ',
(category{done=true}:gsub('(%[%[)(Category:)([^|%]]-)(%|)','%1%2%3|%2%3%4'):gsub('(%[%[)(Category:)','%1:%2'))
):done()
:wikitext(p.demo=='doc'andp.demodocornil)
else
--Checks for valid name; emulates original template's check using {{FULLPAGENAME:{{{name|}}}}}
localnormalizedName=mw.title.new(args.nameor'')
ifnormalizedNameandnormalizedName.fullText==page.fullTextthen
output=mw.html.create():node(output):wikitext(p.templatepage(frame,page))
elseifnotpage.isSubpageandpage.namespace==10then-- Template namespace and not a subpage
category{{k=args.nameand'E'or'W',t=page.text}}
end
end
returnoutput:wikitext(notp.demoandcategory{done=true}ornil)
end

returnp