Module:Row numbers: Difference between revisions

From escforumwiki
Jump to navigation Jump to search
en>Trappist the monk
m (Trappist the monk moved page Module:Sandbox/trappist the monk/incrementor to Module:Row counter without leaving a redirect: move out of sandbox;)
en>Trappist the monk
No edit summary
Line 10: Line 10:
local tbl_str = mw.text.unstripNoWiki (frame.args[1]); -- get an already rendered table from whereever <nowiki>...</nowiki> put it
local tbl_str = mw.text.unstripNoWiki (frame.args[1]); -- get an already rendered table from whereever <nowiki>...</nowiki> put it


tbl_str = mw.text.decode (tbl_str); -- un-nowiki the references
tbl_str = tbl_str:gsub ('&lt;', '<'); -- replace these character entities with their actual characters
tbl_str = tbl_str:gsub ('&gt;', '>'); -- mw.text.decode (tbl_str); is too aggressive


while (tbl_str:find ('_row_count')) do -- if there is at least one of our special reserved words
while (tbl_str:find ('_row_count')) do -- if there is at least one of our special reserved words

Revision as of 12:30, 12 April 2018

Implements {{Row numbers}}


require('Module:No globals');
local p={}

function p.row_counter (frame)
	if not frame.args[1]:match ('^%s*\127[^\127]*UNIQ%-%-nowiki%-%d%d%d%d%d%d%d%d%-QINU`\"\'\127%s*$') 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

	tbl_str = tbl_str:gsub ('&lt;', '<');										-- replace these character entities with their actual characters
	tbl_str = tbl_str:gsub ('&gt;', '>');										-- mw.text.decode (tbl_str); is too aggressive

	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;