Anda dapat membuat halaman dokumentasi untuk buat pada modul Scribunto ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
require('strict') localp={} localsandbox-- = '/sandbox' -- BE SURE TO COMMENT OUT this definition when deploying to live localyesno=require('Module:Yesno') localshell=function(frame,header,content,collapsed,class) localstyles=frame:extensionTag('templatestyles','',{src='Module:Message box/tmbox.css'}) ..frame:extensionTag('templatestyles','',{src='Module:Banner shell'..(sandboxor'')..'/styles.css'}) localcontent_row ifcontentthen content_row=mw.html.create('tr') :tag('td') :attr('colspan','2') :addClass('banner-shell-inner') :addClass('outercollapse') :wikitext(content) :done() end localholder=mw.html.create('table') :attr('role','presentation') :addClass('tmbox') :addClass('tmbox-notice') :addClass('banner-shell') :addClass(class)-- allow additional class to be specified :addClass(contentand'mw-collapsible'ornil) :addClass(collapsedand'mw-collapsed'ornil) :node(header) :node(content_row) returnstyles..tostring(holder) end p.banner_holder=function(frame) localargs=require('Module:Arguments').getArgs(frame,{wrappers={'Templat:Banner holder'}}) localimage='[[File:'..(args.imageor'NewFavicon icon.svg') ..'|'..(args.sizeor'24')..'px' ..'|link='..(args.image_linkor'') ..'|alt='..(args.altor'')..']]' localimage_cell=mw.html.create('td') :addClass('mbox-image') :wikitext(image) localtext_cell=mw.html.create('td') :addClass('mbox-text') :addClass('banner-shell-header') :tag('span') :addClass('nowrap') :css('float','left') :wikitext(string.rep(' ',10)) :done() :wikitext(args.textor'Spanduk halaman pembicaraan lainnya') localheader=mw.html.create('tr') :node(image_cell) :node(text_cell) returnshell(frame,header,args[1],yesno(args.collapsed)) end localDuplicateBanners=function(text) localcapture='<span class="wpb%-project">([^<>]*)</span>' localbanners={} forprojectintext:gmatch(capture)do ifbanners[project]==truethen returnproject end banners[project]=true end end p.banner_shell=function(frame) localcfg=mw.loadData('Module:Banner shell/config'..(sandboxor'')) localargs=require('Module:Arguments').getArgs(frame,{wrappers={cfg.template}}) localtitle=args.demo_pageandmw.title.new(args.demo_page)ormw.title.getCurrentTitle() localpagetype=require('Module:Pagetype')._main{ page=title.prefixedText, dab=cfg.page_types.dab, sia='set index article', soft_redirect=cfg.page_types.soft_redirect, nonexistent=cfg.page_types.nonexistent, timedtext=cfg.page_types.timedtext, defaultns='extended' } locallang=mw.language.getContentLanguage() localclassmask=require('Module:WikiProject banner'..(sandboxor'')).class_mask localclass=classmask(args.classor'',title.talkPageTitle,false,pagetype) localdemo=notyesno(args.categoryortrue,true)orargs.demo_page localout={} localaddCategory=function(category,sort_key) ifnotdemoandtitle.isTalkPagethen localcategory_title=mw.title.new('Category:'..category) table.insert(out,'[['..category_title.prefixedText..(sort_keyand('|'..sort_key)or'')..']]') end end ifdemoandnotargs.demo_pagethen pagetype='article' end localblp=args.blpandargs.blp:lower() ifyesno(blp)orblp=='activepol'then table.insert(out,frame:expandTemplate{ title=cfg.blp_template.blp, args={activepol=blp=='activepol'and'yes'} }) elseifblp=='lainnya'then table.insert(out,frame:expandTemplate{ title=cfg.blp_template.blpo} ) end localvital ifyesno(args.vital)then localpage=mw.ustring.upper(mw.ustring.sub(title.subjectPageTitle.text,1,1))-- get first letter of article name localcodepoint=mw.ustring.codepoint(page,1,1) ifcodepoint<65orcodepoint>90then--first letter is not between A-Z page='lainnya' end localdata_page=mw.title.new('Wikipedia:Artikel penting/data/'..page..'.json') ifdata_page.existsthen localindex=title.subjectPageTitle.text index=tostring(tonumber(index))==indexandtonumber(index)orindex--convert to number if page is numerical, otherwise loadJsonData does not work localdata=mw.loadJsonData(data_page.fullText)[index] ifdatathen locallevel=data.levelandtostring(data.level) iflevelanddata.topicthen locallink='Wikipedia:Artikel penting/Level/'..level if(level=='4'orlevel=='5')then link=link..'/'..data.topic end ifdata.sublistthen link=link..'/'..data.sublist end ifdata.sectionthen link=link..'#'..data.section end ifnotmw.title.new(link).existsthen-- add tracking category if link does not exist addCategory(cfg.vital.attention,'L') end vital=cfg.vital.with_level:format(link,level) else vital=cfg.vital.without_level end for_,catinipairs(cfg.vital.categories)do ifcat:find('_KELAS')and(class=='NA'orclass=='')then addCategory(cfg.vital.attention,class=='NA'and'N'or'U') elseiflevel==nilthen addCategory(cfg.vital.attention,'V') elseifdata.topic==nilthen addCategory(cfg.vital.attention,'T') else localcategory=cat :gsub('_Kelas',class..'-Kelas') :gsub('_LEVEL',level) :gsub('_TOPIC',data.topic) addCategory(category) end end addCategory(cfg.vital.all) else addCategory(cfg.vital.not_listed) end end end localtext,icon_image,icon_str ifclass=='NA'then icon_image=cfg.icons.type[pagetype]orcfg.icons.default icon_str=pagetype=='page'and'Non-article page'orlang:ucfirst(pagetype) text={cfg.rating.not_required:format(vitalorpagetype)} elseifclass==''then icon_image=cfg.icons.unassessed icon_str='Unassessed article' text={cfg.rating.not_yet:format(vitalorpagetype)} addCategory('All unassessed articles') else icon_image=cfg.icons.quality[class]orcfg.icons.unassessed icon_str=class..'-Class '..pagetype text={cfg.rating.rated:format(vitalorpagetype,class)} frame:preprocess('{{#assessment:Project-independent assessment'..'|'..class..'}}') end localicon=string.format('[[File:%s|%s|35px|class=noviewer|alt=]]',icon_image,icon_str) table.insert(text,' '..cfg.rating.scale) ifargs[1]then table.insert(text,'<br>'..cfg.project.interest..' ') table.insert(text,yesno(args.collapsed)andcfg.project.collapsedorcfg.project.uncollapsed) localduplicate_cat=DuplicateBanners(args[1]) ifduplicate_catandtitle.isTalkPagethen addCategory(cfg.tracking.duplicate,duplicate_cat) end elseifnotyesno(args.vital)andclass~=''then-- if no projects and not vital and assessed then add class super category addCategory(class..'-Class '..(class=='NA'and'pages'or'articles')) end localheader=mw.html.create('tr') :tag('td') :addClass('assess') :wikitext(icon) :done() :tag('td') :addClass('banner-shell-header') :css('text-align','left') :css('font-weight','normal') :wikitext(table.concat(text)) :done() table.insert( out, shell(frame,header,args[1],yesno(args.collapsed),'wpbs') ) ifargs.listasthen table.insert(out,frame:preprocess('{{DEFAULTSORT:'..args.listas..'}}')) end ifnotdemothen localtracking=require('Module:Check for unknown parameters')._check({ unknown=cfg.tracking.unknown, preview=cfg.tracking.preview, '1','blp','kategori','kelas','collapsed','demo_page','listas','vital' },frame:getParent().args) table.insert(out,tracking) ifargs.categoryandyesno(args.category)~=falsethen-- category should not be "yes" addCategory(cfg.tracking.invalid,'category') end ifargs.collapsedandyesno(args.collapsed)~=truethen-- collapsed should not be "no" addCategory(cfg.tracking.invalid,'collapsed') end ifyesno(blp)==nilandblp~=nilandblp~='lainnya'andblp~='activepol'then addCategory(cfg.tracking.invalid,'blp') end ifpagetype=='article'andargs.classandclass==''then-- find pages with invalid class parameter addCategory(cfg.tracking.invalid,'Zclass') end end returntable.concat(out) end returnp