Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ rvm:
- 2.4
- 2.5
- 2.6
- 2.7.0-preview2
- ruby-head
- jruby
matrix:
Expand Down
4 changes: 2 additions & 2 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ if defined?(Gem) and defined?(Gem::PackageTask)

s.require_path = 'lib'
s.add_development_dependency 'rake'
s.add_development_dependency 'test-unit', '~> 2.0'
s.add_development_dependency 'test-unit', '~> 3.0'

s.extra_rdoc_files << 'README.md'
s.rdoc_options <<
Expand Down Expand Up @@ -127,7 +127,7 @@ if defined?(Gem) and defined?(Gem::PackageTask)

s.require_path = 'lib'
s.add_development_dependency 'rake'
s.add_development_dependency 'test-unit', '~> 2.0'
s.add_development_dependency 'test-unit', '~> 3.0'

s.extra_rdoc_files << 'README.md'
s.rdoc_options <<
Expand Down
6 changes: 3 additions & 3 deletions json-java.gemspec
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ spec = Gem::Specification.new do |s|

if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
s.add_development_dependency(%q<rake>, [">= 0"])
s.add_development_dependency(%q<test-unit>, ["~> 2.0"])
s.add_development_dependency(%q<test-unit>, ["~> 3.0"])
else
s.add_dependency(%q<rake>, [">= 0"])
s.add_dependency(%q<test-unit>, ["~> 2.0"])
s.add_dependency(%q<test-unit>, ["~> 3.0"])
end
else
s.add_dependency(%q<rake>, [">= 0"])
s.add_dependency(%q<test-unit>, ["~> 2.0"])
s.add_dependency(%q<test-unit>, ["~> 3.0"])
end
end

Expand Down
Binary file modified json.gemspec
Binary file not shown.
13 changes: 5 additions & 8 deletions json_pure.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,13 @@ Gem::Specification.new do |s|

if s.respond_to? :specification_version then
s.specification_version = 4
end

if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
s.add_development_dependency(%q<rake>.freeze, [">= 0"])
s.add_development_dependency(%q<test-unit>.freeze, ["~> 2.0"])
else
s.add_dependency(%q<rake>.freeze, [">= 0"])
s.add_dependency(%q<test-unit>.freeze, ["~> 2.0"])
end
if s.respond_to? :add_runtime_dependency then
s.add_development_dependency(%q<rake>.freeze, [">= 0"])
s.add_development_dependency(%q<test-unit>.freeze, ["~> 3.0"])
else
s.add_dependency(%q<rake>.freeze, [">= 0"])
s.add_dependency(%q<test-unit>.freeze, ["~> 2.0"])
s.add_dependency(%q<test-unit>.freeze, ["~> 3.0"])
end
end
5 changes: 3 additions & 2 deletions lib/json/common.rb
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,8 @@ class MissingUnicodeSupport < JSONError; end
# * *object_class*: Defaults to Hash
# * *array_class*: Defaults to Array
def parse(source, opts = {})
Parser.new(source, opts).parse
opts ||= {}
Parser.new(source, **opts).parse
end

# Parse the JSON document _source_ into a Ruby data structure and return it.
Expand All @@ -176,7 +177,7 @@ def parse!(source, opts = {})
:max_nesting => false,
:allow_nan => true
}.merge(opts)
Parser.new(source, opts).parse
Parser.new(source, **opts).parse
end

# Generate a JSON document from the Ruby data structure _obj_ and return
Expand Down
3 changes: 2 additions & 1 deletion lib/json/pure/generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,8 @@ def [](name)
if respond_to?(name)
__send__(name)
else
instance_variable_get("@#{name}")
instance_variable_get("@#{name}") if
instance_variables.include?("@#{name}".to_sym) # avoid warning
end
end

Expand Down
10 changes: 9 additions & 1 deletion lib/json/pure/parser.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
6 changes: 3 additions & 3 deletions tests/json_common_interface_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@ def test_index
end

def test_parser
assert_match /::Parser\z/, JSON.parser.name
assert_match(/::Parser\z/, JSON.parser.name)
end

def test_generator
assert_match /::Generator\z/, JSON.generator.name
assert_match(/::Generator\z/, JSON.generator.name)
end

def test_state
assert_match /::Generator::State\z/, JSON.state.name
assert_match(/::Generator::State\z/, JSON.state.name)
end

def test_create_id
Expand Down
12 changes: 6 additions & 6 deletions tests/json_parser_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -92,26 +92,26 @@ def test_parse_numbers
assert_raise(JSON::ParserError) { parse('.23') }
assert_raise(JSON::ParserError) { parse('023') }
assert_equal 23, parse('23')
assert_equal -23, parse('-23')
assert_equal(-23, parse('-23'))
assert_equal_float 3.141, parse('3.141')
assert_equal_float -3.141, parse('-3.141')
assert_equal_float(-3.141, parse('-3.141'))
assert_equal_float 3.141, parse('3141e-3')
assert_equal_float 3.141, parse('3141.1e-3')
assert_equal_float 3.141, parse('3141E-3')
assert_equal_float 3.141, parse('3141.0E-3')
assert_equal_float -3.141, parse('-3141.0e-3')
assert_equal_float -3.141, parse('-3141e-3')
assert_equal_float(-3.141, parse('-3141.0e-3'))
assert_equal_float(-3.141, parse('-3141e-3'))
assert_raise(ParserError) { parse('NaN') }
assert parse('NaN', :allow_nan => true).nan?
assert_raise(ParserError) { parse('Infinity') }
assert_equal 1.0/0, parse('Infinity', :allow_nan => true)
assert_raise(ParserError) { parse('-Infinity') }
assert_equal -1.0/0, parse('-Infinity', :allow_nan => true)
assert_equal(-1.0/0, parse('-Infinity', :allow_nan => true))
end

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)
Expand Down