Module:NUMBEROFSECTIONS
Revision as of 10:05, 24 March 2016 by blackwiki>Fred Gandt (to be expanded - pushing to module space early due to strange sandbox results)
| This module is rated as alpha. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome. |
Usage
| This module is invoked by {{NUMBEROFSECTIONS}} |
sections{{ #invoke:NUMBEROFSECTIONS|main| page name [ # page name [ # ... ] ] | level = section level number(s) }}- Multiple page names (at least one required) are the
#delimited names of any Wikipedia pages (including namespaces). - section level(s) (required) is any group of numerals between 1 and 6 (inclusive) e.g.
435or5 3 4equates to:
- sections with a level
3( "===" ),4( "====" ) or5( "=====" ) heading.
- sections with a level
- Multiple page names (at least one required) are the
{{#invoke:NUMBEROFSECTIONS|main|Wikipedia:Village pump (technical)|level=2}}producesTemplate:NUMBEROFSECTIONS{{#invoke:NUMBEROFSECTIONS|main|Wikipedia:Village pump (technical)#Wikipedia:Village pump (proposals)|level=2}}producesTemplate:NUMBEROFSECTIONS
local p = {}
local function count(raw, seclevs)
local nos = 0
local index = 1
local lev = seclevs[index]
while lev do
for m in string.gmatch(raw, "\n" .. lev .. "[^=]") do
nos = nos + 1
end
index = index + 1
lev = seclevs[index]
end
return nos
end
function p.sections(frame)
local levels = {}
local level = frame.args[2]
local title = mw.title.new(frame.args[1])
for value in mw.text.gsplit(level, "") do
if value ~= " " then
levels[#levels + 1] = string.rep("=", tonumber(value))
end
end
return count(title:getContent(), levels)
end
return p