<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.s-bou.com/index.php?action=history&amp;feed=atom&amp;title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%3AGapnum</id>
	<title>モジュール:Gapnum - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.s-bou.com/index.php?action=history&amp;feed=atom&amp;title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%3AGapnum"/>
	<link rel="alternate" type="text/html" href="https://wiki.s-bou.com/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Gapnum&amp;action=history"/>
	<updated>2026-04-04T10:51:47Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.36.2</generator>
	<entry>
		<id>https://wiki.s-bou.com/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Gapnum&amp;diff=2204&amp;oldid=prev</id>
		<title>Administrator: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.s-bou.com/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Gapnum&amp;diff=2204&amp;oldid=prev"/>
		<updated>2021-10-22T17:42:56Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&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;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021年10月22日 (金) 17:42時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://wiki.s-bou.com/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Gapnum&amp;diff=2203&amp;oldid=prev</id>
		<title>ja&gt;Ktns: en:Module:Gapnum (01:40, 7 June 2015)から複製</title>
		<link rel="alternate" type="text/html" href="https://wiki.s-bou.com/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Gapnum&amp;diff=2203&amp;oldid=prev"/>
		<updated>2015-08-01T12:01:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/index.php?title=W:en:Special:Permalink/665830825&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;W:en:Special:Permalink/665830825 (存在しないページ)&quot;&gt;en:Module:Gapnum (01:40, 7 June 2015)&lt;/a&gt;から複製&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local getArgs&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	if not getArgs then&lt;br /&gt;
		getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local args = getArgs(frame, {wrappers = 'Template:Gapnum'})&lt;br /&gt;
	local n = args[1]&lt;br /&gt;
&lt;br /&gt;
	if not n then&lt;br /&gt;
		error('Parameter 1 is required')&lt;br /&gt;
	elseif not tonumber(n) and not tonumber(n, 36) then -- Validates any number with base ≤ 36&lt;br /&gt;
		error('Unable to convert &amp;quot;' .. args[1] .. '&amp;quot; to a number')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local gap = args.gap&lt;br /&gt;
	local precision = tonumber(args.prec)&lt;br /&gt;
&lt;br /&gt;
	return p.gaps(n,{gap=gap,prec=precision})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Not named p._main so that it has a better function name when required by Module:Val&lt;br /&gt;
function p.gaps(n,tbl)&lt;br /&gt;
	local nstr = tostring(n)&lt;br /&gt;
	if not tbl then&lt;br /&gt;
		tbl = {}&lt;br /&gt;
	end&lt;br /&gt;
	local gap = tbl.gap or '.25em'&lt;br /&gt;
&lt;br /&gt;
	local int_part, frac_part = p.groups(n,tbl.prec)&lt;br /&gt;
&lt;br /&gt;
	local ret = mw.html.create('span')&lt;br /&gt;
							:css('white-space','nowrap')&lt;br /&gt;
							-- No gap necessary on first group&lt;br /&gt;
							:wikitext(table.remove(int_part,1))&lt;br /&gt;
&lt;br /&gt;
	-- Build int part&lt;br /&gt;
	for _, v in ipairs(int_part) do&lt;br /&gt;
		ret:tag('span')&lt;br /&gt;
				:css('margin-left',gap)&lt;br /&gt;
				:wikitext(v)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if frac_part then&lt;br /&gt;
		-- The first group after the decimal shouldn't have a gap&lt;br /&gt;
		ret:wikitext('.' .. table.remove(frac_part,1))&lt;br /&gt;
		-- Build frac part&lt;br /&gt;
		for _, v in ipairs(frac_part) do&lt;br /&gt;
			ret:tag('span')&lt;br /&gt;
					:css('margin-left',gap)&lt;br /&gt;
					:wikitext(v)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Creates tables where each element is a different group of the number&lt;br /&gt;
function p.groups(num,precision)&lt;br /&gt;
	local nstr = tostring(num)&lt;br /&gt;
	if not precision then&lt;br /&gt;
		precision = -1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local decimalloc = nstr:find('.', 1, true)&lt;br /&gt;
	local int_part, frac_part&lt;br /&gt;
	if decimalloc == nil then&lt;br /&gt;
		int_part = nstr&lt;br /&gt;
	else&lt;br /&gt;
		int_part = nstr:sub(1, decimalloc-1)&lt;br /&gt;
		frac_part = nstr:sub(decimalloc + 1)&lt;br /&gt;
	end&lt;br /&gt;
	-- only define ret_i as an empty table, let ret_d stay nil&lt;br /&gt;
	local ret_i,ret_d = {}&lt;br /&gt;
	-- Loop to handle most of the groupings; from right to left, so that if a group has less than 3 members, it will be the first group&lt;br /&gt;
	while int_part:len() &amp;gt; 3 do&lt;br /&gt;
		-- Insert in first spot, since we're moving backwards&lt;br /&gt;
		table.insert(ret_i,1,int_part:sub(-3))&lt;br /&gt;
		int_part = int_part:sub(1,-4)&lt;br /&gt;
	end&lt;br /&gt;
	-- handle any left over numbers&lt;br /&gt;
	if int_part:len() &amp;gt; 0 then&lt;br /&gt;
		table.insert(ret_i,1,int_part)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if precision ~= 0 and frac_part then&lt;br /&gt;
		ret_d = {}&lt;br /&gt;
		if precision == -1 then&lt;br /&gt;
			precision = frac_part:len()&lt;br /&gt;
		end&lt;br /&gt;
		-- Reduce the length of the string if required precision is less than actual precision&lt;br /&gt;
		-- OR&lt;br /&gt;
		-- Increase it (by adding 0s) if the required precision is more than actual&lt;br /&gt;
		local offset = precision - frac_part:len()&lt;br /&gt;
		if offset &amp;lt; 0 then&lt;br /&gt;
			frac_part = frac_part:sub(1,precision)&lt;br /&gt;
		elseif offset &amp;gt; 0 then&lt;br /&gt;
			frac_part = frac_part .. string.rep('0', offset)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Allow groups of 3 or 2 (3 first)&lt;br /&gt;
		for v in string.gmatch(frac_part,'%d%d%d?') do&lt;br /&gt;
			table.insert(ret_d,v)&lt;br /&gt;
		end&lt;br /&gt;
		-- Preference for groups of 4 instead of groups of 1 at the end&lt;br /&gt;
		if #frac_part % 3 == 1 then&lt;br /&gt;
			if frac_part:len() == 1 then&lt;br /&gt;
				ret_d = {frac_part}&lt;br /&gt;
			else&lt;br /&gt;
				local last_g = ret_d[#ret_d] or ''&lt;br /&gt;
				last_g = last_g..frac_part:sub(-1)&lt;br /&gt;
				ret_d[#ret_d] = last_g&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ret_i,ret_d&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ja&gt;Ktns</name></author>
	</entry>
</feed>