oj 3.16.0 → 3.16.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/ext/oj/parse.c +5 -1
- data/lib/oj/version.rb +1 -1
- data/test/foo.rb +9 -3
- data/test/perf_dump.rb +1 -1
- data/test/prec.rb +4 -4
- data/test/test_parser_debug.rb +1 -1
- data/test/test_strict.rb +10 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 380409882636ecb1f8e3e54369f85dc11d7e167db741f5aec15bfadad2180601
|
4
|
+
data.tar.gz: 0c60d6f8a5b7d76904b84d378e41632f67c0e3fa2e61aeacfb680cadf15ef9dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1cbb6d75ab0c495c8d40983970e8fca54aa846eedb4e031368a98874f1db4ca68f160076ac59c230186316dc686923bad86196fa09bf585f501cf11fe814f9bc
|
7
|
+
data.tar.gz: 9d521e53c4e5311eda8abb0f89b12ae2dd3f8007abb02f0b5ff7728311f6d0b64221a493f8df66a7f223dd12c2c2ba6d47b309867f99e2fe206d440d028368a6
|
data/CHANGELOG.md
CHANGED
data/ext/oj/parse.c
CHANGED
@@ -875,7 +875,11 @@ oj_num_as_value(NumInfo ni) {
|
|
875
875
|
double d = strtod(ni->str, &end);
|
876
876
|
|
877
877
|
if ((long)ni->len != (long)(end - ni->str)) {
|
878
|
-
|
878
|
+
if (Qnil == ni->pi->err_class) {
|
879
|
+
rb_raise(oj_parse_error_class, "Invalid float");
|
880
|
+
} else {
|
881
|
+
rb_raise(ni->pi->err_class, "Invalid float");
|
882
|
+
}
|
879
883
|
}
|
880
884
|
rnum = rb_float_new(d);
|
881
885
|
}
|
data/lib/oj/version.rb
CHANGED
data/test/foo.rb
CHANGED
@@ -5,10 +5,16 @@ $LOAD_PATH << '.'
|
|
5
5
|
$LOAD_PATH << File.join(__dir__, '../lib')
|
6
6
|
$LOAD_PATH << File.join(__dir__, '../ext')
|
7
7
|
|
8
|
+
require 'active_support'
|
8
9
|
require 'json'
|
9
10
|
require 'oj'
|
10
|
-
require 'oj/json'
|
11
11
|
|
12
|
-
Oj.mimic_JSON
|
12
|
+
Oj.mimic_JSON()
|
13
|
+
# Oj::Rails.mimic_JSON()
|
13
14
|
|
14
|
-
|
15
|
+
begin
|
16
|
+
::JSON.parse('{ "foo": 84e }')
|
17
|
+
#::JSON.parse('{ "foo": 84eb234 }')
|
18
|
+
rescue Exception => e
|
19
|
+
puts "#{e.class}: #{e.message}"
|
20
|
+
end
|
data/test/perf_dump.rb
CHANGED
@@ -28,7 +28,7 @@ opts.parse(ARGV)
|
|
28
28
|
'd' => [ true, [false, [-123_456_789, nil], 3.9676, ['Something else.', false], nil]], # mix it up array
|
29
29
|
'e' => { 'zero' => nil, 'one' => 1, 'two' => 2, 'three' => [3], 'four' => [0, 1, 2, 3, 4] }, # hash
|
30
30
|
'f' => nil, # nil
|
31
|
-
'h' => { 'a' => { 'b' => { 'c' => { 'd' => {
|
31
|
+
'h' => { 'a' => { 'b' => { 'c' => { 'd' => {'e' => { 'f' => { 'g' => nil }}}}}}}, # deep hash, not that deep
|
32
32
|
'i' => [[[[[[[nil]]]]]]] # deep array, again, not that deep
|
33
33
|
}
|
34
34
|
|
data/test/prec.rb
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'oj'
|
4
4
|
|
5
|
-
extras = {
|
5
|
+
extras = {'locationLng' => -97.14690769100295}
|
6
6
|
|
7
|
-
Oj.default_options = {
|
7
|
+
Oj.default_options = {float_precision: 17}
|
8
8
|
|
9
9
|
encoded = Oj.dump(extras)
|
10
10
|
puts encoded
|
@@ -15,8 +15,8 @@ require 'active_record'
|
|
15
15
|
Oj::Rails.set_encoder()
|
16
16
|
Oj::Rails.set_decoder()
|
17
17
|
|
18
|
-
Oj.default_options = {
|
19
|
-
# Using Oj rails encoder, gets the correct value: {
|
18
|
+
Oj.default_options = {float_precision: 17}
|
19
|
+
# Using Oj rails encoder, gets the correct value: {'locationLng':-97.14690769100295}
|
20
20
|
encoded = ActiveSupport::JSON.encode(extras)
|
21
21
|
puts encoded
|
22
22
|
puts ActiveSupport::JSON.decode(encoded)
|
data/test/test_parser_debug.rb
CHANGED
data/test/test_strict.rb
CHANGED
@@ -69,6 +69,16 @@ class StrictJuice < Minitest::Test
|
|
69
69
|
dump_and_load(-2.48e100 * 1.0e10, false)
|
70
70
|
end
|
71
71
|
|
72
|
+
def test_invalid_float
|
73
|
+
begin
|
74
|
+
Oj.load("64ecb72d29191067f91ff95b")
|
75
|
+
rescue Oj::ParseError => e
|
76
|
+
assert(e.message == "Invalid float")
|
77
|
+
return
|
78
|
+
end
|
79
|
+
assert(false, "*** expected an exception")
|
80
|
+
end
|
81
|
+
|
72
82
|
def test_nan_dump
|
73
83
|
assert_equal('null', Oj.dump(0/0.0, :nan => :null))
|
74
84
|
assert_equal('3.3e14159265358979323846', Oj.dump(0/0.0, :nan => :huge))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.16.
|
4
|
+
version: 3.16.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Ohler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|