1
0

Added option for disabling soft numbers.

This commit is contained in:
Jon Michael Aanes 2017-06-09 17:06:10 +02:00
parent 153bf23a9f
commit 4e7be31964
3 changed files with 10 additions and 4 deletions

View File

@ -132,7 +132,7 @@ local SPECIAL_NUMBER = {
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
function format_num (n, shorthand) function format_num (n, shorthand, soft_numbers)
if n ~= n then return shorthand and 'NaN' or '0/0' if n ~= n then return shorthand and 'NaN' or '0/0'
elseif n < 0 then return '-' .. format_num(-n, shorthand) elseif n < 0 then return '-' .. format_num(-n, shorthand)
end end
@ -152,7 +152,7 @@ function format_num (n, shorthand)
local num = special_number_tests.real(unpack(a)) local num = special_number_tests.real(unpack(a))
if num == n then if num == n then
alternative_repr( special_number_tests[shorthand and 'short' or 'repr'](unpack(a)) ) alternative_repr( special_number_tests[shorthand and 'short' or 'repr'](unpack(a)) )
elseif num then elseif num and soft_numbers then
local repr = special_number_tests[shorthand and 'short' or 'repr'](unpack(a)) local repr = special_number_tests[shorthand and 'short' or 'repr'](unpack(a))
local native_precise = tonumber(('%'..utf8.width(repr)..'f'):format(n)) local native_precise = tonumber(('%'..utf8.width(repr)..'f'):format(n))
if math.abs(num - n) <= math.abs( native_precise - n ) then if math.abs(num - n) <= math.abs( native_precise - n ) then
@ -173,5 +173,5 @@ return function (value, depth, l)
assert(type(value) == 'number') assert(type(value) == 'number')
assert(type(depth) == 'number' and type(l) == 'table') assert(type(depth) == 'number' and type(l) == 'table')
-- TODO: Add support for more relaxed representations. -- TODO: Add support for more relaxed representations.
l[#l+1] = format_num(value, CAN_USE_SHORTHAND and l.options.math_shorthand) l[#l+1] = format_num(value, CAN_USE_SHORTHAND and l.options.math_shorthand, l.options.soft_numbers)
end end

View File

@ -469,6 +469,7 @@ local KNOWN_OPTIONS = {
include_closure = { type = 'boolean', default = false }, include_closure = { type = 'boolean', default = false },
indent = { type = 'string', default = '\t' }, -- TODO: Change default to ' '. indent = { type = 'string', default = '\t' }, -- TODO: Change default to ' '.
math_shorthand = { type = 'boolean', default = false }, math_shorthand = { type = 'boolean', default = false },
soft_numbers = { type = 'boolean', default = true }, -- TODO: Add support for maximally precise numbers.
max_depth = { type = 'number', default = math.huge }, max_depth = { type = 'number', default = math.huge },
more_function_info = { type = 'boolean', default = false }, more_function_info = { type = 'boolean', default = false },
recursion = { type = 'string', default = 'ignore', accepted = {['ignore'] = true, ['marked'] = true} }, recursion = { type = 'string', default = 'ignore', accepted = {['ignore'] = true, ['marked'] = true} },
@ -489,7 +490,7 @@ local function ensure_that_all_options_are_known (options)
end end
-- Assign default values -- Assign default values
for option_name, option_info in pairs(KNOWN_OPTIONS) do for option_name, option_info in pairs(KNOWN_OPTIONS) do
if not options[option_name] then if options[option_name] == nil then
options[option_name] = option_info.default options[option_name] = option_info.default
end end
end end

View File

@ -189,6 +189,11 @@ do
expect = 'math.pi', expect = 'math.pi',
shorthand = 'π', shorthand = 'π',
} }
format_test {
input = sum,
options = { soft_numbers = false },
expect = tostring(sum),
}
end end
number_test { number_test {