<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ARow_numbers</id>
	<title>Module:Row numbers - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ARow_numbers"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Row_numbers&amp;action=history"/>
	<updated>2026-04-20T13:48:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Row_numbers&amp;diff=144945&amp;oldid=prev</id>
		<title>imported&gt;Legoktm: Replace Module:No globals with require( &quot;strict&quot; )</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Row_numbers&amp;diff=144945&amp;oldid=prev"/>
		<updated>2022-10-21T19:02:28Z</updated>

		<summary type="html">&lt;p&gt;Replace &lt;a href=&quot;/research/Module:No_globals&quot; title=&quot;Module:No globals&quot;&gt;Module:No globals&lt;/a&gt; with require( &amp;quot;strict&amp;quot; )&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
local count;&lt;br /&gt;
local hcount;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; G E T _ C O U N T &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns a counter value according to the keyword extracted from the table; maintains count and hcount.  Inserts&lt;br /&gt;
a space character ahead of &amp;lt;count&amp;gt; or &amp;lt;hcount&amp;gt; so that, in the case of negative indexes, the negation operator &lt;br /&gt;
is not mistaken for part of the wikitable markup.  Returns:&lt;br /&gt;
	| -&amp;lt;count&amp;gt; – a cell value&lt;br /&gt;
instead of:&lt;br /&gt;
	|-&amp;lt;count&amp;gt; – row markup with extraneous text&lt;br /&gt;
&lt;br /&gt;
The keywords have the meanings:&lt;br /&gt;
	_row_count:			use row counter value (count); the hold counter (hcount) is same as count&lt;br /&gt;
	_row_count_hold:	use the value currently assigned to hcount; bump count but do not bump hcount&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function get_count (keyword)&lt;br /&gt;
	count = count + 1;															-- always bump the count&lt;br /&gt;
	if &amp;#039;_row_count&amp;#039; == keyword then												-- bump hcount, return new count value&lt;br /&gt;
		hcount = count;&lt;br /&gt;
		return &amp;#039; &amp;#039; .. count;													-- insert a leading space ahead of count&lt;br /&gt;
	elseif &amp;#039;_row_count_hold&amp;#039; == keyword then									-- current hcount value without increment&lt;br /&gt;
		return &amp;#039; &amp;#039; .. hcount;													-- insert a leading space ahead of hcount&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; R O W _ N U M B E R S &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
replaces keywords _row_count and _row_count_hold from the table in frame.args[1]&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function row_numbers (frame)&lt;br /&gt;
	local args = frame.args[1] and frame.args or frame:getParent().args;&lt;br /&gt;
	&lt;br /&gt;
	-- Only use if |index is a number; |index= may be omitted (nil), or empty string, or non-digit&lt;br /&gt;
	-- We subtract one because the get_count function increments this before use.&lt;br /&gt;
	count = (tonumber(args.index) or 1) - 1;&lt;br /&gt;
&lt;br /&gt;
	local tbl_str;&lt;br /&gt;
	-- Find out if what we got for input has been wrapped in &amp;lt;nowiki&amp;gt;...&amp;lt;/nowiki&amp;gt; tags&lt;br /&gt;
	if args[1]:match (&amp;#039;^%s*\127[^\127]*UNIQ%-%-nowiki%-%x%x%x%x%x%x%x%x%-QINU[^\127]*\127%s*$&amp;#039;) then&lt;br /&gt;
		-- BUG. The &amp;lt;nowiki&amp;gt; trick does not work in VisualEditor, mobile app, or Special:ExpandTemplates.&lt;br /&gt;
		-- get the table from the nowiki tags passed as arguments&lt;br /&gt;
		tbl_str = mw.text.unstripNoWiki (args[1]);&lt;br /&gt;
&lt;br /&gt;
		-- undo &amp;lt;nowiki&amp;gt;&amp;#039;s escaping of the wikitext (mw.text.decode (tbl_str); is too aggressive)&lt;br /&gt;
		tbl_str = tbl_str:gsub(&amp;#039;&amp;amp;lt;&amp;#039;, &amp;#039;&amp;lt;&amp;#039;):gsub(&amp;#039;&amp;amp;gt;&amp;#039;, &amp;#039;&amp;gt;&amp;#039;);&lt;br /&gt;
	else&lt;br /&gt;
		-- No MediaWiki bugs here (hopefully), but you need to escape = signs with {{=}} like normal.&lt;br /&gt;
		-- It is not possible to circumvent this because named parameters are not passed to Lua in a&lt;br /&gt;
		-- defined order, always have whitespace trimmed, etc.&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		for _, str in ipairs(args) do&lt;br /&gt;
			table.insert(parts, str)&lt;br /&gt;
		end&lt;br /&gt;
		tbl_str = table.concat(parts, &amp;#039;|&amp;#039;);&lt;br /&gt;
	end&lt;br /&gt;
	-- if there is at least one of our special reserved words, replace it with a count&lt;br /&gt;
	return frame:preprocess (tbl_str:gsub(&amp;#039;_row_count[_%w]*&amp;#039;, get_count));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   F U N C T I O N S &amp;gt;------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	row_numbers = row_numbers&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>imported&gt;Legoktm</name></author>
	</entry>
</feed>