Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 

















Module:Row numbers






العربية


Català
Español

Oʻzbekcha / ўзбекча
Русский
Simple English
کوردی
Srpskohrvatski / српскохрватски

Türkçe
 

Edit links
 









Module
Talk
 

















Read
View source
View history
 








Tools
   


Actions  



Read
View source
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 





Permanently protected module

From Wikipedia, the free encyclopedia
 


require('strict');

local count;
local hcount;


--[[--------------------------< G E T _ C O U N T >------------------------------------------------------------

returns a counter value according to the keyword extracted from the table; maintains count and hcount.  Inserts
a space character ahead of <count> or <hcount> so that, in the case of negative indexes, the negation operator 
is not mistaken for part of the wikitable markup.  Returns:
 | -<count> – a cell value
instead of:
 |-<count> – row markup with extraneous text

The keywords have the meanings:
 _row_count:   use row counter value (count); the hold counter (hcount) is same as count
 _row_count_hold: use the value currently assigned to hcount; bump count but do not bump hcount

]]

local function get_count (keyword)
 count = count + 1;               -- always bump the count
 if '_row_count' == keyword then            -- bump hcount, return new count value
  hcount = count;
  return ' ' .. count;             -- insert a leading space ahead of count
 elseif '_row_count_hold' == keyword then         -- current hcount value without increment
  return ' ' .. hcount;             -- insert a leading space ahead of hcount
 end
end


--[[--------------------------< R O W _ N U M B E R S >--------------------------------------------------------

replaces keywords _row_count and _row_count_hold from the table in frame.args[1]

]]

local function row_numbers (frame)
 local args = frame.args[1] and frame.args or frame:getParent().args;
 
 -- Only use if |index is a number; |index= may be omitted (nil), or empty string, or non-digit
 -- We subtract one because the get_count function increments this before use.
 count = (tonumber(args.index) or 1) - 1;

 local tbl_str;
 -- Find out if what we got for input has been wrapped in <nowiki>...</nowiki> tags
 if args[1]:match ('^%s*\127[^\127]*UNIQ%-%-nowiki%-%x%x%x%x%x%x%x%x%-QINU[^\127]*\127%s*$') then
  -- BUG. The <nowiki> trick does not work in VisualEditor, mobile app, or Special:ExpandTemplates.
  -- get the table from the nowiki tags passed as arguments
  tbl_str = mw.text.unstripNoWiki (args[1]);

  -- undo <nowiki>'s escaping of the wikitext (mw.text.decode (tbl_str); is too aggressive)
  tbl_str = tbl_str:gsub('&lt;', '<'):gsub('&gt;', '>');
 else
  -- No MediaWiki bugs here (hopefully), but you need to escape = signs with {{=}} like normal.
  -- It is not possible to circumvent this because named parameters are not passed to Lua in a
  -- defined order, always have whitespace trimmed, etc.
  local parts = {}
  for _, str in ipairs(args) do
   table.insert(parts, str)
  end
  tbl_str = table.concat(parts, '|');
 end
 -- if there is at least one of our special reserved words, replace it with a count
 return frame:preprocess (tbl_str:gsub('_row_count[_%w]*', get_count));
end


--[[--------------------------< E X P O R T E D   F U N C T I O N S >------------------------------------------
]]

return {
 row_numbers = row_numbers
 }

Retrieved from "https://en.wikipedia.org/w/index.php?title=Module:Row_numbers&oldid=1145350912"

Category: 
Modules that check for strip markers
Hidden category: 
Wikipedia semi-protected modules
 



This page was last edited on 18 March 2023, at 18:00 (UTC).

Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



Privacy policy

About Wikipedia

Disclaimers

Contact Wikipedia

Code of Conduct

Developers

Statistics

Cookie statement

Mobile view



Wikimedia Foundation
Powered by MediaWiki