Module:Table template counter/sandbox: Difference between revisions
imported>SMAK ←Created page with '-- This module counts table rows with specified template name in wikitext. local p = {} local getArgs function p.main(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return p._main(getArgs(frame, {wrappers = 'Template:Table template counter'})) end function p._main(args) -- Get the title object. local titleObj do local success success, titleObj = pcall(mw.title.new, args.page) if not success or not titleObj then...' |
(No difference)
|
Latest revision as of 09:52, 18 July 2022
Documentation for this module may be created at Module:Table template counter/sandbox/doc
-- This module counts table rows with specified template name in wikitext.
local p = {}
local getArgs
function p.main(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return p._main(getArgs(frame, {wrappers = 'Template:Table template counter'}))
end
function p._main(args)
-- Get the title object.
local titleObj
do
local success
success, titleObj = pcall(mw.title.new, args.page)
if not success or not titleObj then
titleObj = mw.title.getCurrentTitle()
end
end
-- Get the page content.
local content = titleObj:getContent()
if not content then
return nil
end
-- Find the wikitables on that page.
local wikitables = {}
do
local iWikitable = 0
local s1 = content:match('^({|.-\n|})')
if s1 then
iWikitable = iWikitable + 1
wikitables[iWikitable] = s1
end
for s in content:gmatch('\n({|.-\n|})') do
iWikitable = iWikitable + 1
wikitables[iWikitable] = s
end
end
-- Find the wikitable to work on.
local wikitable
if args.id then
for i, s in ipairs(wikitables) do
if s:match('^{|[^\n]*id *= *" *(%w+) *"') == args.id then
wikitable = s
break
end
end
else
wikitable = wikitables[tonumber(args.tableno) or 1]
end
if not wikitable then
return nil
end
-- Count the number of rows with the entered template name.
local count = 0
if args.templatename then
do
local temp
temp, count = wikitable:gsub('|%-[|\n%-:;=\"\'%[%w%s%(%)%]]*%{%{'..args.templatename..'|[\'%[%a%s%(%|%d%)%]]+%}%}', '{{'..args.templatename..'}}')
end
end
if count < 0 then
count = 0
end
return count
end
return p