From ca0ffa59283c62b6805db6d80aea12e17d0f2f9b Mon Sep 17 00:00:00 2001 From: Ryan Davis Date: Fri, 22 Nov 2019 14:53:04 -0800 Subject: [PATCH] Minor cleanup for ruby 2.7 warnings and failures. --- .travis.yml | 1 + lib/json/pure/parser.rb | 10 +++++++++- tests/json_parser_test.rb | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1ac58d82..2962e9d3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,7 @@ rvm: - 2.4 - 2.5 - 2.6 + - 2.7.0-preview2 - ruby-head - jruby matrix: diff --git a/lib/json/pure/parser.rb b/lib/json/pure/parser.rb index 3a6343bc..53402964 100644 --- a/lib/json/pure/parser.rb +++ b/lib/json/pure/parser.rb @@ -197,7 +197,15 @@ def parse_string def parse_value case when scan(FLOAT) - @decimal_class && @decimal_class.new(self[1]) || Float(self[1]) + if @decimal_class then + if @decimal_class == BigDecimal then + BigDecimal(self[1]) + else + @decimal_class.new(self[1]) || Float(self[1]) + end + else + Float(self[1]) + end when scan(INTEGER) Integer(self[1]) when scan(TRUE) diff --git a/tests/json_parser_test.rb b/tests/json_parser_test.rb index 5f454eb1..452e177c 100644 --- a/tests/json_parser_test.rb +++ b/tests/json_parser_test.rb @@ -111,7 +111,7 @@ def test_parse_numbers def test_parse_bigdecimals assert_equal(BigDecimal, JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"].class) - assert_equal(BigDecimal.new("0.901234567890123456789E1"),JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"] ) + assert_equal(BigDecimal("0.901234567890123456789E1"), JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"] ) end if Array.method_defined?(:permutation)