diff --git a/helpers.rb b/helpers.rb new file mode 100644 index 0000000..44e65a1 --- /dev/null +++ b/helpers.rb @@ -0,0 +1,20 @@ +def thousands(n, sep = ',') + s = n.to_s + sign = s[0] == '-' ? '-' : '' + s = s[1..-1] if sign == '-' + + int, frac = s.split('.', 2) + + out = '' + count = 0 + + int.reverse.each_char do |c| + out << sep if count > 0 && count % 3 == 0 + out << c + count += 1 + end + + int = out.reverse + + frac ? "#{sign}#{int}.#{frac}" : "#{sign}#{int}" +end diff --git a/lua_init.lua b/lua_init.lua new file mode 100644 index 0000000..1078e02 --- /dev/null +++ b/lua_init.lua @@ -0,0 +1,16 @@ +local function escape_pattern(s) + return (s:gsub("(%W)", "%%%1")) +end + +function Thousands(n, sep) + sep = sep or "." + local s = tostring(n) + local sign, int, frac = s:match("^([%-]?)(%d+)(%.?%d*)$") + + int = int:reverse():gsub("(%d%d%d)", "%1" .. sep):reverse() + + local sep_esc = escape_pattern(sep) + int = int:gsub("^" .. sep_esc, "") + + return sign .. int .. frac +end