json 2.2.0-java → 2.3.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/json/add/bigdecimal.rb +2 -2
- data/lib/json/add/complex.rb +2 -2
- data/lib/json/add/rational.rb +2 -2
- data/lib/json/add/regexp.rb +2 -2
- data/lib/json/common.rb +2 -2
- data/lib/json/ext/generator.jar +0 -0
- data/lib/json/ext/parser.jar +0 -0
- data/lib/json/pure/generator.rb +2 -1
- data/lib/json/pure/parser.rb +9 -1
- data/lib/json/version.rb +1 -1
- data/tests/json_common_interface_test.rb +4 -4
- data/tests/json_generator_test.rb +44 -0
- data/tests/json_parser_test.rb +14 -14
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7dedc6571d595948f39fafcb3a5b5f57a93baac5c7d71aa22743a713b2fc6408
|
4
|
+
data.tar.gz: 810d86047c05bb8dab727f6b624e30aba7d63711d694d8840eb2c716bffb4708
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47f0e1b42974dab1836d3acf3ec4f3a821475dddea2d393e168ad7385d9f894b9c9fc4eec453f803a702bedc0daf25d5274cd741ec3ff63ab67f6ab11183b3d1
|
7
|
+
data.tar.gz: aedd907a306c70eb77f610128ad3f208729ca9a6ff743e7f6e0a8100fe13d7c52963359c78b17144a0a1ec49c7a98588067fb14c3c950291dc932896ffffe371
|
data/lib/json/add/bigdecimal.rb
CHANGED
data/lib/json/add/complex.rb
CHANGED
data/lib/json/add/rational.rb
CHANGED
data/lib/json/add/regexp.rb
CHANGED
data/lib/json/common.rb
CHANGED
@@ -153,7 +153,7 @@ module JSON
|
|
153
153
|
# * *object_class*: Defaults to Hash
|
154
154
|
# * *array_class*: Defaults to Array
|
155
155
|
def parse(source, opts = {})
|
156
|
-
Parser.new(source, opts).parse
|
156
|
+
Parser.new(source, **(opts||{})).parse
|
157
157
|
end
|
158
158
|
|
159
159
|
# Parse the JSON document _source_ into a Ruby data structure and return it.
|
@@ -176,7 +176,7 @@ module JSON
|
|
176
176
|
:max_nesting => false,
|
177
177
|
:allow_nan => true
|
178
178
|
}.merge(opts)
|
179
|
-
Parser.new(source, opts).parse
|
179
|
+
Parser.new(source, **(opts||{})).parse
|
180
180
|
end
|
181
181
|
|
182
182
|
# Generate a JSON document from the Ruby data structure _obj_ and return
|
data/lib/json/ext/generator.jar
CHANGED
Binary file
|
data/lib/json/ext/parser.jar
CHANGED
Binary file
|
data/lib/json/pure/generator.rb
CHANGED
data/lib/json/pure/parser.rb
CHANGED
@@ -197,7 +197,15 @@ module JSON
|
|
197
197
|
def parse_value
|
198
198
|
case
|
199
199
|
when scan(FLOAT)
|
200
|
-
|
200
|
+
if @decimal_class then
|
201
|
+
if @decimal_class == BigDecimal then
|
202
|
+
BigDecimal(self[1])
|
203
|
+
else
|
204
|
+
@decimal_class.new(self[1]) || Float(self[1])
|
205
|
+
end
|
206
|
+
else
|
207
|
+
Float(self[1])
|
208
|
+
end
|
201
209
|
when scan(INTEGER)
|
202
210
|
Integer(self[1])
|
203
211
|
when scan(TRUE)
|
data/lib/json/version.rb
CHANGED
@@ -27,15 +27,15 @@ class JSONCommonInterfaceTest < Test::Unit::TestCase
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_parser
|
30
|
-
assert_match
|
30
|
+
assert_match(/::Parser\z/, JSON.parser.name)
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_generator
|
34
|
-
assert_match
|
34
|
+
assert_match(/::Generator\z/, JSON.generator.name)
|
35
35
|
end
|
36
36
|
|
37
37
|
def test_state
|
38
|
-
assert_match
|
38
|
+
assert_match(/::Generator::State\z/, JSON.state.name)
|
39
39
|
end
|
40
40
|
|
41
41
|
def test_create_id
|
@@ -56,7 +56,7 @@ class JSONCommonInterfaceTest < Test::Unit::TestCase
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def test_parse_bang
|
59
|
-
assert_equal [ 1,
|
59
|
+
assert_equal [ 1, Infinity, 3, ], JSON.parse!('[ 1, Infinity, 3 ]')
|
60
60
|
end
|
61
61
|
|
62
62
|
def test_generate
|
@@ -40,6 +40,44 @@ class JSONGeneratorTest < Test::Unit::TestCase
|
|
40
40
|
EOT
|
41
41
|
end
|
42
42
|
|
43
|
+
def silence
|
44
|
+
v = $VERBOSE
|
45
|
+
$VERBOSE = nil
|
46
|
+
yield
|
47
|
+
ensure
|
48
|
+
$VERBOSE = v
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_remove_const_segv
|
52
|
+
return if RUBY_ENGINE == 'jruby'
|
53
|
+
stress = GC.stress
|
54
|
+
const = JSON::SAFE_STATE_PROTOTYPE.dup
|
55
|
+
|
56
|
+
bignum_too_long_to_embed_as_string = 1234567890123456789012345
|
57
|
+
expect = bignum_too_long_to_embed_as_string.to_s
|
58
|
+
GC.stress = true
|
59
|
+
|
60
|
+
10.times do |i|
|
61
|
+
tmp = bignum_too_long_to_embed_as_string.to_json
|
62
|
+
raise "'\#{expect}' is expected, but '\#{tmp}'" unless tmp == expect
|
63
|
+
end
|
64
|
+
|
65
|
+
silence do
|
66
|
+
JSON.const_set :SAFE_STATE_PROTOTYPE, nil
|
67
|
+
end
|
68
|
+
|
69
|
+
10.times do |i|
|
70
|
+
assert_raise TypeError do
|
71
|
+
bignum_too_long_to_embed_as_string.to_json
|
72
|
+
end
|
73
|
+
end
|
74
|
+
ensure
|
75
|
+
GC.stress = stress
|
76
|
+
silence do
|
77
|
+
JSON.const_set :SAFE_STATE_PROTOTYPE, const
|
78
|
+
end
|
79
|
+
end if JSON.const_defined?("Ext")
|
80
|
+
|
43
81
|
def test_generate
|
44
82
|
json = generate(@hash)
|
45
83
|
assert_equal(parse(@json2), parse(json))
|
@@ -374,4 +412,10 @@ EOT
|
|
374
412
|
assert_equal '["foo"]', JSON.generate([s.new('foo')])
|
375
413
|
end
|
376
414
|
end
|
415
|
+
|
416
|
+
if defined?(Encoding)
|
417
|
+
def test_nonutf8_encoding
|
418
|
+
assert_equal("\"5\u{b0}\"", "5\xb0".force_encoding("iso-8859-1").to_json)
|
419
|
+
end
|
420
|
+
end
|
377
421
|
end
|
data/tests/json_parser_test.rb
CHANGED
@@ -91,27 +91,27 @@ class JSONParserTest < Test::Unit::TestCase
|
|
91
91
|
assert_raise(JSON::ParserError) { parse('+23') }
|
92
92
|
assert_raise(JSON::ParserError) { parse('.23') }
|
93
93
|
assert_raise(JSON::ParserError) { parse('023') }
|
94
|
-
assert_equal
|
95
|
-
assert_equal
|
96
|
-
assert_equal_float
|
97
|
-
assert_equal_float
|
98
|
-
assert_equal_float
|
99
|
-
assert_equal_float
|
100
|
-
assert_equal_float
|
101
|
-
assert_equal_float
|
102
|
-
assert_equal_float
|
103
|
-
assert_equal_float
|
94
|
+
assert_equal(23, parse('23'))
|
95
|
+
assert_equal(-23, parse('-23'))
|
96
|
+
assert_equal_float(3.141, parse('3.141'))
|
97
|
+
assert_equal_float(-3.141, parse('-3.141'))
|
98
|
+
assert_equal_float(3.141, parse('3141e-3'))
|
99
|
+
assert_equal_float(3.141, parse('3141.1e-3'))
|
100
|
+
assert_equal_float(3.141, parse('3141E-3'))
|
101
|
+
assert_equal_float(3.141, parse('3141.0E-3'))
|
102
|
+
assert_equal_float(-3.141, parse('-3141.0e-3'))
|
103
|
+
assert_equal_float(-3.141, parse('-3141e-3'))
|
104
104
|
assert_raise(ParserError) { parse('NaN') }
|
105
105
|
assert parse('NaN', :allow_nan => true).nan?
|
106
106
|
assert_raise(ParserError) { parse('Infinity') }
|
107
|
-
assert_equal
|
107
|
+
assert_equal(1.0/0, parse('Infinity', :allow_nan => true))
|
108
108
|
assert_raise(ParserError) { parse('-Infinity') }
|
109
|
-
assert_equal
|
109
|
+
assert_equal(-1.0/0, parse('-Infinity', :allow_nan => true))
|
110
110
|
end
|
111
111
|
|
112
112
|
def test_parse_bigdecimals
|
113
|
-
assert_equal(BigDecimal,
|
114
|
-
assert_equal(BigDecimal
|
113
|
+
assert_equal(BigDecimal, JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"].class)
|
114
|
+
assert_equal(BigDecimal("0.901234567890123456789E1"),JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"] )
|
115
115
|
end
|
116
116
|
|
117
117
|
if Array.method_defined?(:permutation)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Daniel Luz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,7 +109,7 @@ files:
|
|
109
109
|
- tests/json_parser_test.rb
|
110
110
|
- tests/json_string_matching_test.rb
|
111
111
|
- tests/test_helper.rb
|
112
|
-
homepage: http://
|
112
|
+
homepage: http://flori.github.com/json
|
113
113
|
licenses:
|
114
114
|
- Ruby
|
115
115
|
metadata: {}
|
@@ -128,8 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
128
|
- !ruby/object:Gem::Version
|
129
129
|
version: '0'
|
130
130
|
requirements: []
|
131
|
-
rubyforge_project:
|
132
|
-
rubygems_version: 2.7.
|
131
|
+
rubyforge_project:
|
132
|
+
rubygems_version: 2.7.10
|
133
133
|
signing_key:
|
134
134
|
specification_version: 4
|
135
135
|
summary: JSON implementation for JRuby
|