Module:Table row counter
Appearance
This module implements the {{table row counter}} template.
Usage from wikitext
This module can be used from wikitext in the same way as the {{table row counter}} template, by simply using {{#invoke:table row counter | main}}
in place of {{table row counter}}
.
Usage from Lua modules
To use this module from other Lua modules, first load the module.
local mTRC = require('Module:Table row counter')
You can then count table rows by using the _main function.
mTRC._main(args)
args is a table containing the module arguments. See the template documentation for more information about the available arguments, and for general caveats about this module's use.
-- This module counts table rows in wikitext.
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {parentOnly = true})
local tableNo = tonumber(args[1])
local ignoreRows = tonumber(args.ignore)
local page = args.page
local success, titleObj = pcall(mw.title.new, page)
if not success then
titleObj = nil
end
return p.luaMain(tableNo, titleObj) or ''
end
function p.luaMain(tableNo, ignoreRows, titleObj)
titleObj = titleObj or mw.title.getCurrentTitle()
local content = titleObj:getContent()
if not content then
return nil
end
local wikitables
do
wikitables = {}
local iWikitable = 0
for s in content:gmatch('\n({|.-\n|})') do
iWikitable = iWikitable + 1
wikitables[iWikitable] = s
end
end
tableNo = tableNo or 1
local wikitable = wikitables[tableNo]
if not wikitable then
return nil
end
local iRow
wikitable, iRow = wikitable:gsub('\n|%-', '\n|-')
return iRow - ignoreRows
end
return p