Jump to content

Module:Row numbers: Difference between revisions

From escforumwiki
en>Trappist the monk
No edit summary
en>Trappist the monk
No edit summary
Line 8: Line 8:


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
 
-- un-nowiki the references
tbl_str = mw.text.decode (tbl_str); -- un-nowiki the references
tbl_str = tbl_str:gsub ('&lt;ref *&gt;', '<ref>'); -- opening <ref>; white space between 'ref' and '>' is allowed
 
tbl_str = tbl_str:gsub ('&lt;ref([^/]+/)&gt;', '<ref%1/>'); -- self-closed references
tbl_str = tbl_str:gsub ('&lt;ref([^&]+)&gt;', '<ref%1>'); -- opening with attributes
tbl_str = tbl_str:gsub ('&lt;/ref *&gt;', '</ref>'); -- closing </ref>; white space between 'ref' and '>' is allowed
-- un-nowiki html markup
tbl_str = tbl_str:gsub ('&lt; *br */? *&gt;', '<br />'); -- <br />
tbl_str = tbl_str:gsub ('&lt;!%-%-', '<!--'); -- <!-- opening remark markup
tbl_str = tbl_str:gsub ('%-%-&gt;', '-->'); -- --> closing remark markup
tbl_str = tbl_str:gsub ('&lt;sup *&gt;', '<sup>'); -- <sup>
tbl_str = tbl_str:gsub ('&lt;/sup *&gt;', '</sup>'); -- </sup>
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
tbl_str = tbl_str:gsub ('_row_count', count, 1); -- replace it with a count
tbl_str = tbl_str:gsub ('_row_count', count, 1); -- replace it with a count

Revision as of 16:46, 11 April 2018

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

	tbl_str = mw.text.decode (tbl_str);											-- un-nowiki the references

	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;
MediaWiki spam blocked by CleanTalk.