<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://www.vigyanwiki.in/index.php?action=history&amp;feed=atom&amp;title=Module%3ANumber_table_sorting</id>
	<title>Module:Number table sorting - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.vigyanwiki.in/index.php?action=history&amp;feed=atom&amp;title=Module%3ANumber_table_sorting"/>
	<link rel="alternate" type="text/html" href="https://www.vigyanwiki.in/index.php?title=Module:Number_table_sorting&amp;action=history"/>
	<updated>2026-04-27T01:41:34Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://www.vigyanwiki.in/index.php?title=Module:Number_table_sorting&amp;diff=78738&amp;oldid=prev</id>
		<title>Indicwiki: 1 revision imported from :alpha:Module:Number_table_sorting</title>
		<link rel="alternate" type="text/html" href="https://www.vigyanwiki.in/index.php?title=Module:Number_table_sorting&amp;diff=78738&amp;oldid=prev"/>
		<updated>2023-02-07T04:37:20Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported from &lt;a href=&quot;https://alpha.indicwiki.in/index.php?title=Module:Number_table_sorting&quot; class=&quot;extiw&quot; title=&quot;alpha:Module:Number table sorting&quot;&gt;alpha:Module:Number_table_sorting&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:07, 7 February 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en-GB&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Indicwiki</name></author>
	</entry>
	<entry>
		<id>https://www.vigyanwiki.in/index.php?title=Module:Number_table_sorting&amp;diff=78737&amp;oldid=prev</id>
		<title>alpha&gt;Indicwiki: Created page with &quot;local lang = mw.language.getContentLanguage() local Math = require('Module:Math') local SortKey = require('Module:Sortkey') -- constants local INF = math.huge local NEGINF = -...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.vigyanwiki.in/index.php?title=Module:Number_table_sorting&amp;diff=78737&amp;oldid=prev"/>
		<updated>2023-01-25T06:15:14Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local lang = mw.language.getContentLanguage() local Math = require(&amp;#039;Module:Math&amp;#039;) local SortKey = require(&amp;#039;Module:Sortkey&amp;#039;) -- constants local INF = math.huge local NEGINF = -...&amp;quot;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:45, 25 January 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en-GB&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>alpha&gt;Indicwiki</name></author>
	</entry>
	<entry>
		<id>https://www.vigyanwiki.in/index.php?title=Module:Number_table_sorting&amp;diff=18752&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://www.vigyanwiki.in/index.php?title=Module:Number_table_sorting&amp;diff=18752&amp;oldid=prev"/>
		<updated>2022-10-18T04:12:17Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:42, 18 October 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en-GB&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://www.vigyanwiki.in/index.php?title=Module:Number_table_sorting&amp;diff=18751&amp;oldid=prev</id>
		<title>wikipedia&gt;QEDK: QEDK moved page Module:Nts to Module:Number table sorting without leaving a redirect: requested move; consensus at Module talk:Number table sorting</title>
		<link rel="alternate" type="text/html" href="https://www.vigyanwiki.in/index.php?title=Module:Number_table_sorting&amp;diff=18751&amp;oldid=prev"/>
		<updated>2019-06-09T19:39:47Z</updated>

		<summary type="html">&lt;p&gt;QEDK moved page &lt;a href=&quot;/index.php?title=Module:Nts&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Module:Nts (page does not exist)&quot;&gt;Module:Nts&lt;/a&gt; to &lt;a href=&quot;/wiki/Module:Number_table_sorting&quot; title=&quot;Module:Number table sorting&quot;&gt;Module:Number table sorting&lt;/a&gt; without leaving a redirect: &lt;a href=&quot;https://en.wikipedia.org/wiki/Requested_moves&quot; class=&quot;extiw&quot; title=&quot;wikipedia:Requested moves&quot;&gt;requested move&lt;/a&gt;; consensus at &lt;a href=&quot;/index.php?title=Module_talk:Number_table_sorting&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Module talk:Number table sorting (page does not exist)&quot;&gt;Module talk:Number table sorting&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local lang = mw.language.getContentLanguage()&lt;br /&gt;
local Math = require('Module:Math')&lt;br /&gt;
local SortKey = require('Module:Sortkey')&lt;br /&gt;
-- constants&lt;br /&gt;
local INF = math.huge&lt;br /&gt;
local NEGINF = -math.huge&lt;br /&gt;
local MINUS = '−'  -- Unicode U+2212 MINUS SIGN (UTF-8: e2 88 92)&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Nts class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Nts = {}&lt;br /&gt;
Nts.__index = Nts&lt;br /&gt;
&lt;br /&gt;
Nts.formats = {&lt;br /&gt;
	no = true,&lt;br /&gt;
	yes = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Nts.new(args)&lt;br /&gt;
	local self = setmetatable({}, Nts)&lt;br /&gt;
&lt;br /&gt;
	self:parseNumber(args[1])&lt;br /&gt;
&lt;br /&gt;
	-- Set the format string&lt;br /&gt;
	self.format = args.format or 'yes'&lt;br /&gt;
	if not Nts.formats[self.format] then&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&amp;quot;'%s' is not a valid format&amp;quot;,&lt;br /&gt;
			tostring(self.format)&lt;br /&gt;
		), 0)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- To display some text before the display version of the number&lt;br /&gt;
	-- {{nts|123456789.00123|prefix=approx.&amp;amp;nbsp;}} → approx. 123,456,789.00123&lt;br /&gt;
	self.prefix = args.prefix or ''&lt;br /&gt;
	&lt;br /&gt;
	-- debug info&lt;br /&gt;
	self.debug = args.debug or 'no'&lt;br /&gt;
	self.quiet = args.quiet or 'no'&lt;br /&gt;
&lt;br /&gt;
	return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Parse the entered number&lt;br /&gt;
function Nts:parseNumber(s)&lt;br /&gt;
	-- sanitize&lt;br /&gt;
	s = s or '';&lt;br /&gt;
	s = string.gsub(s,'&amp;amp;minus;','-')&lt;br /&gt;
	s = string.gsub(s, MINUS, '-')&lt;br /&gt;
	self.rawNumberString = s&lt;br /&gt;
	&lt;br /&gt;
	-- fractions. was somewhat but completely broken at some point&lt;br /&gt;
	self.isFraction = (string.find(s, '/') ~= nil)&lt;br /&gt;
	if self.isFraction then&lt;br /&gt;
		error(string.format(&lt;br /&gt;
				&amp;quot;Fractions are not supported&amp;quot;,&lt;br /&gt;
				tostring(s)&lt;br /&gt;
			), 0)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- format detection&lt;br /&gt;
	self.isScientificNotation = (string.find(s, 'e') ~= nil)&lt;br /&gt;
	&lt;br /&gt;
	-- parse with language options&lt;br /&gt;
	self.number = lang:parseFormattedNumber(s)&lt;br /&gt;
	&lt;br /&gt;
	-- parse with fallback&lt;br /&gt;
	if not self.number then&lt;br /&gt;
		self.number = tonumber(s)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- allow for empty string as a value&lt;br /&gt;
	if not self.number then&lt;br /&gt;
		-- error(string.format(&lt;br /&gt;
		-- 		&amp;quot;'%s' is not a valid number&amp;quot;,&lt;br /&gt;
		-- 		tostring(s)&lt;br /&gt;
		-- 	), 0)&lt;br /&gt;
		self.number = NEGINF&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if self.number &amp;lt; 0 then&lt;br /&gt;
		self.sign = MINUS&lt;br /&gt;
	else&lt;br /&gt;
		self.sign = ''&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	self.absNumber = math.abs(self.number)&lt;br /&gt;
	if self.absNumber ~= INF then&lt;br /&gt;
		self.magnitude = math.floor(math.log10(self.absNumber))&lt;br /&gt;
		self.significand = self.number / 10^self.magnitude&lt;br /&gt;
		self.precision = Math._precision(self.rawNumberString)&lt;br /&gt;
		self.integer = math.floor(self.absNumber)&lt;br /&gt;
		self.fractional = math.abs(self.number - self.integer)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Nts:makeDisplay()&lt;br /&gt;
	local ret ={}&lt;br /&gt;
&lt;br /&gt;
	if self.quiet == 'yes' then&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	ret[#ret + 1] = self.prefix&lt;br /&gt;
	local sciNotation = string.find(tostring(self.number),'e')&lt;br /&gt;
	if self.absNnumber == INF or isNaN(self.number) or self.magnitude ==nil or math.abs(self.magnitude) == INF then&lt;br /&gt;
		ret[#ret + 1] = string.gsub(self.rawNumberString, '-', MINUS)&lt;br /&gt;
	elseif sciNotation ~= nil or math.abs(self.magnitude) &amp;gt;= 9 then&lt;br /&gt;
		ret[#ret + 1] = self.sign&lt;br /&gt;
		if self.format == 'yes' then&lt;br /&gt;
			ret[#ret + 1] = lang:formatNum(math.abs(self.number * 10^-self.magnitude))&lt;br /&gt;
		else&lt;br /&gt;
			ret[#ret + 1] = math.abs(self.number * 10^-self.magnitude)&lt;br /&gt;
		end&lt;br /&gt;
		ret[#ret + 1] = '&amp;lt;span style=&amp;quot;margin-left:0.2em&amp;quot;&amp;gt;×&amp;lt;span style=&amp;quot;margin-left:0.1em&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;s style=&amp;quot;display:none&amp;quot;&amp;gt;^&amp;lt;/s&amp;gt;&amp;lt;sup&amp;gt;'&lt;br /&gt;
		if self.magnitude&amp;lt;0 then&lt;br /&gt;
			ret[#ret + 1] = MINUS .. (-self.magnitude)&lt;br /&gt;
		else&lt;br /&gt;
			ret[#ret + 1] = self.magnitude&lt;br /&gt;
		end&lt;br /&gt;
		ret[#ret + 1] = '&amp;lt;/sup&amp;gt;'&lt;br /&gt;
	else&lt;br /&gt;
		ret[#ret + 1] = self.sign&lt;br /&gt;
		if self.format == 'yes' then&lt;br /&gt;
			ret[#ret + 1] = Math._precision_format(self.absNumber, self.precision)&lt;br /&gt;
		else&lt;br /&gt;
			local newPrecision = Math._precision(self.absNumber)&lt;br /&gt;
			ret[#ret + 1] = tostring(self.absNumber)&lt;br /&gt;
			if newPrecision &amp;lt; self.precision then&lt;br /&gt;
				if self.integer == self.absNumber then&lt;br /&gt;
					ret[#ret + 1] = '.'&lt;br /&gt;
				end&lt;br /&gt;
				ret[#ret + 1] = string.rep('0', math.min(12, self.precision - newPrecision) )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
    return table.concat(ret) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Nts:makeSortKey()&lt;br /&gt;
	return SortKey._sortKeyForNumber(self.number) .. '♠'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ifNaNThen(n,p)&lt;br /&gt;
	if isNaN(n) then&lt;br /&gt;
		return p&lt;br /&gt;
	end&lt;br /&gt;
	return n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function isNaN(n)&lt;br /&gt;
	return n ~= n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Nts:renderTrackingCategories()&lt;br /&gt;
	if self.hasDeprecatedParameters then&lt;br /&gt;
		return '[[Category:Nts templates with deprecated parameters]]'&lt;br /&gt;
	else&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Nts:__tostring()&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
	local span = root:tag('span')&lt;br /&gt;
		:attr('data-sort-value', self:makeSortKey())&lt;br /&gt;
&lt;br /&gt;
	if self.debug == 'yes' then&lt;br /&gt;
		span:tag('span')&lt;br /&gt;
			:css('border', '1px solid')&lt;br /&gt;
			:wikitext(self:makeSortKey())&lt;br /&gt;
	elseif self.quiet ~= 'no' then&lt;br /&gt;
		span:css('display', 'none')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Display&lt;br /&gt;
	if self.quiet == 'no' then&lt;br /&gt;
		span:wikitext(self:makeDisplay())&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Tracking categories&lt;br /&gt;
	root:wikitext(self:renderTrackingCategories())&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p._exportClasses()&lt;br /&gt;
	return {&lt;br /&gt;
		Nts = Nts&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local success, ret = pcall(function ()&lt;br /&gt;
		local nts = Nts.new(args)&lt;br /&gt;
		return tostring(nts)&lt;br /&gt;
	end)&lt;br /&gt;
	if success then&lt;br /&gt;
		return ret&lt;br /&gt;
	else&lt;br /&gt;
		ret = string.format(&lt;br /&gt;
			'&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error in [[Template:Nts]]: %s&amp;lt;/strong&amp;gt;',&lt;br /&gt;
			ret&lt;br /&gt;
		)&lt;br /&gt;
		if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
			-- Only categorise in the main namespace&lt;br /&gt;
			ret = ret .. '[[Category:Nts templates with errors]]'&lt;br /&gt;
		end&lt;br /&gt;
		return ret&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require('Module:Arguments').getArgs(frame, {&lt;br /&gt;
		wrappers = { 'Template:Number table sorting' },&lt;br /&gt;
	})&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wikipedia&gt;QEDK</name></author>
	</entry>
</feed>