Jump to content
Wikipedia The Free Encyclopedia

Module:NUMBEROFSECTIONS/sandbox

From Wikipedia, the free encyclopedia
Module documentation[view] [edit] [history] [purge]
This module is rated as ready for general use. It has reached a mature state, is considered relatively stable and bug-free, and may be used wherever appropriate. It can be mentioned on help pages and other Wikipedia resources as an option for new users. To minimise server load and avoid disruptive output, improvements should be developed through sandbox testing rather than repeated trial-and-error editing.

Usage

[edit ]
Caution This module is invoked by {{NUMBEROFSECTIONS }}
sections
{{ #invoke:NUMBEROFSECTIONS|main| page name [ # page name [ # ... ] ] | level = section level number(s) }}
  1. Multiple page names (at least one required) are the # delimited names of any Wikipedia pages (including namespaces).
  2. section level(s) (required) is any group of numerals between 1 and 6 (inclusive) e.g. 435 or 5 3 4 equates to:
sections with a level 3 ( "===" ), 4 ( "====" ) or 5 ( "=====" ) heading.
{{#invoke:NUMBEROFSECTIONS|main|Wikipedia:Village pump (technical)|level=2}} produces 25
{{#invoke:NUMBEROFSECTIONS|main|Wikipedia:Village pump (technical)#Wikipedia:Village pump (proposals)|level=2}} produces 32
The above documentation is transcluded from Module:NUMBEROFSECTIONS/doc. (edit | history)
Editors can experiment in this module's sandbox (edit | diff) and testcases (create) pages.
Add categories to the /doc subpage. Subpages of this module.
 localp={}

 -- Counting function accepting a string haystack and table of needles
 localfunctioncount(haystack,needles)
 localnumber=0
 -- While we have needles to look for
 forindex,needleinipairs(needles)do
 -- find them all in our haystack
 forminstring.gmatch(haystack,needle)do
 number=number+1
 end
 end
 returnnumber
 end

 -- Function takes any number of # delimited page names and section level numbers
 functionp.sections(frame)
 localtotal=0
 localneedles={}
 localhaystack=''
 -- Separate page names from # delimited string into table
 localpages=mw.text.split(frame.args[1],'%s?#%s?')
 -- Separate whitespace delimited section level numbers into table
 locallevels=mw.text.split(frame.args['level'],'%s*')
 -- Iterate through levels
 forlevelinmw.text.gsplit(table.concat(levels),'')do
 -- and add the level needle to needles
 needles[#needles+1]='\n'..string.rep('=',tonumber(level))..'[^=]'
 end
 -- For each page name in pages
 forindex,pageinipairs(pages)do
 -- create a haystack to search from the page content
 haystack=mw.title.new(page):getContent()
 -- If we've requested the content of a legitimate page
 ifhaystackthen
 --[[ pass the raw markup and needles to count
 				 and add the return to total ]]
 total=total+count(haystack,needles)
 end
 end
 --[[ then return how many sections of the required level
 		 are in all the pages passed ]]
 returntotal
 end

 returnp

AltStyle によって変換されたページ (->オリジナル) /