Module:Row numbers
Appearance
Implements {{Row numbers}}
require('Module:No globals');
local p={}
function p.row_counter (frame)
if not frame.args[1]:match'\127[^\127]*UNIQ%-%-nowiki%-%d%d%d%d%d%d%d%d%-QINU`\"\'\127' then -- make sure that what we get for input has been wrapped in <nowiki>...</nowiki> tags
return '<span style=\"font-size:100%; font-style:normal;\" class=\"error\">error: missing nowiki tags</span>';
end
local count = 1; -- initial value
local tbl_str = mw.text.unstripNoWiki (frame.args[1]); -- get an already rendered table from whereever <nowiki>...</nowiki> put it
-- un-nowiki the references
tbl_str = tbl_str:gsub ('<ref *>', '<ref>'); -- opening <ref>; white space between 'ref' and '>' is allowed
tbl_str = tbl_str:gsub ('<ref([^/]+/)>', '<ref%1/>'); -- self-closed references
tbl_str = tbl_str:gsub ('<ref([^&]+)>', '<ref%1>'); -- opening with attributes
tbl_str = tbl_str:gsub ('</ref *>', '</ref>'); -- closing </ref>; white space between 'ref' and '>' is allowed
-- un-nowiki html markup
tbl_str = tbl_str:gsub ('< *br */? *>', '<br />'); -- <br />
tbl_str = tbl_str:gsub ('<!%-%-', '<!--'); -- <!-- opening remark markup
tbl_str = tbl_str:gsub ('%-%->', '-->'); -- --> closing remark markup
tbl_str = tbl_str:gsub ('<sup *>', '<sup>'); -- <sup>
tbl_str = tbl_str:gsub ('</sup *>', '</sup>'); -- </sup>
while (tbl_str:find ('_row_count')) do -- if there is at least one of our special reserved words
tbl_str = tbl_str:gsub ('_row_count', count, 1); -- replace it with a count
count = count + 1; -- bump the count
end
return frame:preprocess (tbl_str); -- done
end
return p;