oj 3.15.0 → 3.16.3
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/CHANGELOG.md +29 -0
 - data/ext/oj/cache.c +4 -2
 - data/ext/oj/cache.h +3 -2
 - data/ext/oj/code.c +3 -10
 - data/ext/oj/compat.c +5 -18
 - data/ext/oj/custom.c +5 -13
 - data/ext/oj/dump.c +30 -22
 - data/ext/oj/dump.h +1 -4
 - data/ext/oj/dump_compat.c +16 -16
 - data/ext/oj/extconf.rb +4 -2
 - data/ext/oj/fast.c +10 -12
 - data/ext/oj/intern.c +23 -6
 - data/ext/oj/mimic_json.c +3 -6
 - data/ext/oj/object.c +13 -5
 - data/ext/oj/oj.c +155 -132
 - data/ext/oj/oj.h +26 -33
 - data/ext/oj/parse.c +7 -5
 - data/ext/oj/parse.h +16 -14
 - data/ext/oj/parser.c +61 -50
 - data/ext/oj/parser.h +2 -2
 - data/ext/oj/rails.c +23 -7
 - data/ext/oj/reader.c +1 -3
 - data/ext/oj/saj.c +1 -1
 - data/ext/oj/stream_writer.c +35 -15
 - data/ext/oj/string_writer.c +50 -17
 - data/ext/oj/usual.c +20 -0
 - data/ext/oj/usual.h +1 -0
 - data/ext/oj/val_stack.c +13 -2
 - data/lib/oj/active_support_helper.rb +2 -3
 - data/lib/oj/json.rb +159 -149
 - data/lib/oj/mimic.rb +3 -1
 - data/lib/oj/version.rb +1 -1
 - data/test/foo.rb +3 -4
 - data/test/json_gem/json_common_interface_test.rb +4 -2
 - data/test/json_gem/json_generator_test.rb +7 -1
 - data/test/perf_dump.rb +3 -3
 - data/test/prec.rb +4 -4
 - data/test/test_compat.rb +19 -1
 - data/test/test_custom.rb +2 -1
 - data/test/test_object.rb +14 -0
 - data/test/test_parser_debug.rb +1 -1
 - data/test/test_parser_usual.rb +10 -0
 - data/test/test_strict.rb +10 -0
 - data/test/test_various.rb +6 -0
 - metadata +17 -3
 
| 
         @@ -142,6 +142,8 @@ class JSONGeneratorTest < Test::Unit::TestCase 
     | 
|
| 
       142 
142 
     | 
    
         
             
                # seems to occur on travis but not locally.
         
     | 
| 
       143 
143 
     | 
    
         
             
                actual = state.to_h
         
     | 
| 
       144 
144 
     | 
    
         
             
                actual.delete(:escape_slash)
         
     | 
| 
      
 145 
     | 
    
         
            +
                actual.delete(:strict)
         
     | 
| 
      
 146 
     | 
    
         
            +
                actual.delete(:script_safe)
         
     | 
| 
       145 
147 
     | 
    
         
             
                assert_equal({
         
     | 
| 
       146 
148 
     | 
    
         
             
                  :allow_nan             => false,
         
     | 
| 
       147 
149 
     | 
    
         
             
                  :array_nl              => "\n",
         
     | 
| 
         @@ -162,6 +164,8 @@ class JSONGeneratorTest < Test::Unit::TestCase 
     | 
|
| 
       162 
164 
     | 
    
         
             
                # seems to occur on travis but not locally.
         
     | 
| 
       163 
165 
     | 
    
         
             
                actual = state.to_h
         
     | 
| 
       164 
166 
     | 
    
         
             
                actual.delete(:escape_slash)
         
     | 
| 
      
 167 
     | 
    
         
            +
                actual.delete(:strict)
         
     | 
| 
      
 168 
     | 
    
         
            +
                actual.delete(:script_safe)
         
     | 
| 
       165 
169 
     | 
    
         
             
                assert_equal({
         
     | 
| 
       166 
170 
     | 
    
         
             
                  :allow_nan             => false,
         
     | 
| 
       167 
171 
     | 
    
         
             
                  :array_nl              => "",
         
     | 
| 
         @@ -182,6 +186,8 @@ class JSONGeneratorTest < Test::Unit::TestCase 
     | 
|
| 
       182 
186 
     | 
    
         
             
                # seems to occur on travis but not locally.
         
     | 
| 
       183 
187 
     | 
    
         
             
                actual = state.to_h
         
     | 
| 
       184 
188 
     | 
    
         
             
                actual.delete(:escape_slash)
         
     | 
| 
      
 189 
     | 
    
         
            +
                actual.delete(:strict)
         
     | 
| 
      
 190 
     | 
    
         
            +
                actual.delete(:script_safe)
         
     | 
| 
       185 
191 
     | 
    
         
             
                assert_equal({
         
     | 
| 
       186 
192 
     | 
    
         
             
                  :allow_nan             => false,
         
     | 
| 
       187 
193 
     | 
    
         
             
                  :array_nl              => "",
         
     | 
| 
         @@ -352,7 +358,7 @@ class JSONGeneratorTest < Test::Unit::TestCase 
     | 
|
| 
       352 
358 
     | 
    
         
             
                too_deep_ary = eval too_deep
         
     | 
| 
       353 
359 
     | 
    
         
             
                assert_raise(JSON::NestingError) { JSON.generate too_deep_ary }
         
     | 
| 
       354 
360 
     | 
    
         
             
                assert_raise(JSON::NestingError) { JSON.generate too_deep_ary, :max_nesting => 100 }
         
     | 
| 
       355 
     | 
    
         
            -
                ok = JSON.generate too_deep_ary, :max_nesting =>  
     | 
| 
      
 361 
     | 
    
         
            +
                ok = JSON.generate too_deep_ary, :max_nesting => 102
         
     | 
| 
       356 
362 
     | 
    
         
             
                assert_equal too_deep, ok
         
     | 
| 
       357 
363 
     | 
    
         
             
                ok = JSON.generate too_deep_ary, :max_nesting => nil
         
     | 
| 
       358 
364 
     | 
    
         
             
                assert_equal too_deep, ok
         
     | 
    
        data/test/perf_dump.rb
    CHANGED
    
    | 
         @@ -24,11 +24,11 @@ opts.parse(ARGV) 
     | 
|
| 
       24 
24 
     | 
    
         
             
            @obj = {
         
     | 
| 
       25 
25 
     | 
    
         
             
              'a' => 'Alpha', # string
         
     | 
| 
       26 
26 
     | 
    
         
             
              'b' => true,    # boolean
         
     | 
| 
       27 
     | 
    
         
            -
              'c' =>  
     | 
| 
       28 
     | 
    
         
            -
              'd' => [ true, [false, [- 
     | 
| 
      
 27 
     | 
    
         
            +
              'c' => 12_345,   # number
         
     | 
| 
      
 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' => {'e' => { 'f' => { 'g' => nil }}}}}}}, # deep hash, not that deep
         
     | 
| 
      
 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 = {'locationLng' => -97.14690769100295}
         
     | 
| 
      
 5 
     | 
    
         
            +
            extras = { 'locationLng' => -97.14690769100295 }
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            Oj.default_options = {float_precision: 17}
         
     | 
| 
      
 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 = {float_precision: 17}
         
     | 
| 
       19 
     | 
    
         
            -
            # Using Oj rails encoder, gets the correct value: {'locationLng':-97.14690769100295}
         
     | 
| 
      
 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_compat.rb
    CHANGED
    
    | 
         @@ -467,10 +467,28 @@ class CompatJuice < Minitest::Test 
     | 
|
| 
       467 
467 
     | 
    
         
             
              end
         
     | 
| 
       468 
468 
     | 
    
         | 
| 
       469 
469 
     | 
    
         
             
              def test_arg_passing
         
     | 
| 
       470 
     | 
    
         
            -
                json = Oj.to_json(Argy.new(), :max_nesting=> 40)
         
     | 
| 
      
 470 
     | 
    
         
            +
                json = Oj.to_json(Argy.new(), :max_nesting => 40)
         
     | 
| 
       471 
471 
     | 
    
         
             
                assert_equal(%|{"args":"[{:max_nesting=>40}]"}|, json)
         
     | 
| 
       472 
472 
     | 
    
         
             
              end
         
     | 
| 
       473 
473 
     | 
    
         | 
| 
      
 474 
     | 
    
         
            +
              def test_max_nesting
         
     | 
| 
      
 475 
     | 
    
         
            +
                assert_raises() { Oj.to_json([[[[[]]]]], :max_nesting => 3) }
         
     | 
| 
      
 476 
     | 
    
         
            +
                assert_raises() { Oj.dump([[[[[]]]]], :max_nesting => 3, :mode=>:compat) }
         
     | 
| 
      
 477 
     | 
    
         
            +
             
     | 
| 
      
 478 
     | 
    
         
            +
                assert_raises() { Oj.to_json([[]], :max_nesting => 1) }
         
     | 
| 
      
 479 
     | 
    
         
            +
                assert_equal('[[]]', Oj.to_json([[]], :max_nesting => 2))
         
     | 
| 
      
 480 
     | 
    
         
            +
             
     | 
| 
      
 481 
     | 
    
         
            +
                assert_raises() { Oj.dump([[]], :max_nesting => 1, :mode=>:compat) }
         
     | 
| 
      
 482 
     | 
    
         
            +
                assert_equal('[[]]', Oj.dump([[]], :max_nesting => 2, :mode=>:compat))
         
     | 
| 
      
 483 
     | 
    
         
            +
             
     | 
| 
      
 484 
     | 
    
         
            +
                assert_raises() { Oj.to_json([[3]], :max_nesting => 1) }
         
     | 
| 
      
 485 
     | 
    
         
            +
                assert_equal('[[3]]', Oj.to_json([[3]], :max_nesting => 2))
         
     | 
| 
      
 486 
     | 
    
         
            +
             
     | 
| 
      
 487 
     | 
    
         
            +
                assert_raises() { Oj.dump([[3]], :max_nesting => 1, :mode=>:compat) }
         
     | 
| 
      
 488 
     | 
    
         
            +
                assert_equal('[[3]]', Oj.dump([[3]], :max_nesting => 2, :mode=>:compat))
         
     | 
| 
      
 489 
     | 
    
         
            +
             
     | 
| 
      
 490 
     | 
    
         
            +
              end
         
     | 
| 
      
 491 
     | 
    
         
            +
             
     | 
| 
       474 
492 
     | 
    
         
             
              def test_bad_unicode
         
     | 
| 
       475 
493 
     | 
    
         
             
                assert_raises() { Oj.to_json("\xE4xy") }
         
     | 
| 
       476 
494 
     | 
    
         
             
              end
         
     | 
    
        data/test/test_custom.rb
    CHANGED
    
    | 
         @@ -503,8 +503,9 @@ class CustomJuice < Minitest::Test 
     | 
|
| 
       503 
503 
     | 
    
         
             
                # These two forms will lose precision while dumping as they don't
         
     | 
| 
       504 
504 
     | 
    
         
             
                # preserve full precision. We check that a dumped version is equal
         
     | 
| 
       505 
505 
     | 
    
         
             
                # to that version loaded and dumped a second time, but don't check
         
     | 
| 
       506 
     | 
    
         
            -
                # that the loaded Ruby  
     | 
| 
      
 506 
     | 
    
         
            +
                # that the loaded Ruby object is still the same as the original.
         
     | 
| 
       507 
507 
     | 
    
         
             
                dump_load_dump(obj, false, :time_format => :xmlschema, :create_id => '^o', :create_additions => true)
         
     | 
| 
      
 508 
     | 
    
         
            +
                dump_load_dump(obj, false, :time_format => :xmlschema, :create_id => '^o', :create_additions => true, second_precision: 3)
         
     | 
| 
       508 
509 
     | 
    
         
             
                dump_load_dump(obj, false, :time_format => :ruby, :create_id => '^o', :create_additions => true)
         
     | 
| 
       509 
510 
     | 
    
         
             
              end
         
     | 
| 
       510 
511 
     | 
    
         | 
    
        data/test/test_object.rb
    CHANGED
    
    | 
         @@ -951,6 +951,20 @@ class ObjectJuice < Minitest::Test 
     | 
|
| 
       951 
951 
     | 
    
         
             
                dump_and_load(DateTime.new(2012, 6, 19, 13, 5, Rational(7_123_456_789, 1_000_000_000)), false)
         
     | 
| 
       952 
952 
     | 
    
         
             
              end
         
     | 
| 
       953 
953 
     | 
    
         | 
| 
      
 954 
     | 
    
         
            +
              def test_odd_xml_time
         
     | 
| 
      
 955 
     | 
    
         
            +
                str = "2023-01-01T00:00:00Z"
         
     | 
| 
      
 956 
     | 
    
         
            +
                assert_equal(Time.parse(str), Oj.load('{"^t":"' + str + '"}', mode: :object))
         
     | 
| 
      
 957 
     | 
    
         
            +
             
     | 
| 
      
 958 
     | 
    
         
            +
                str = "2023-01-01T00:00:00.3Z"
         
     | 
| 
      
 959 
     | 
    
         
            +
                assert_equal(Time.parse(str), Oj.load('{"^t":"' + str + '"}', mode: :object))
         
     | 
| 
      
 960 
     | 
    
         
            +
             
     | 
| 
      
 961 
     | 
    
         
            +
                str = "2023-01-01T00:00:00.123456789123456789Z"
         
     | 
| 
      
 962 
     | 
    
         
            +
                assert_equal(Time.parse(str), Oj.load('{"^t":"' + str + '"}', mode: :object))
         
     | 
| 
      
 963 
     | 
    
         
            +
             
     | 
| 
      
 964 
     | 
    
         
            +
                str = "2023-01-01T00:00:00.123456789123456789123456789Z"
         
     | 
| 
      
 965 
     | 
    
         
            +
                assert_equal(Time.parse(str), Oj.load('{"^t":"' + str + '"}', mode: :object))
         
     | 
| 
      
 966 
     | 
    
         
            +
              end
         
     | 
| 
      
 967 
     | 
    
         
            +
             
     | 
| 
       954 
968 
     | 
    
         
             
              def test_bag
         
     | 
| 
       955 
969 
     | 
    
         
             
                json = %{{
         
     | 
| 
       956 
970 
     | 
    
         
             
              "^o":"ObjectJuice::Jem",
         
     | 
    
        data/test/test_parser_debug.rb
    CHANGED
    
    
    
        data/test/test_parser_usual.rb
    CHANGED
    
    | 
         @@ -147,6 +147,16 @@ class UsualTest < Minitest::Test 
     | 
|
| 
       147 
147 
     | 
    
         
             
                assert_equal(MyHash, doc.class)
         
     | 
| 
       148 
148 
     | 
    
         
             
              end
         
     | 
| 
       149 
149 
     | 
    
         | 
| 
      
 150 
     | 
    
         
            +
              def test_empty
         
     | 
| 
      
 151 
     | 
    
         
            +
                p = Oj::Parser.new(:usual)
         
     | 
| 
      
 152 
     | 
    
         
            +
                p.raise_on_empty = false
         
     | 
| 
      
 153 
     | 
    
         
            +
                doc = p.parse('  ')
         
     | 
| 
      
 154 
     | 
    
         
            +
                assert_nil(doc)
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
                p.raise_on_empty = true
         
     | 
| 
      
 157 
     | 
    
         
            +
                assert_raises(Oj::ParseError) { p.parse('  ') }
         
     | 
| 
      
 158 
     | 
    
         
            +
              end
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
       150 
160 
     | 
    
         
             
              class MyClass
         
     | 
| 
       151 
161 
     | 
    
         
             
                attr_accessor :a
         
     | 
| 
       152 
162 
     | 
    
         
             
                attr_accessor :b
         
     | 
    
        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))
         
     | 
    
        data/test/test_various.rb
    CHANGED
    
    | 
         @@ -105,6 +105,7 @@ class Juice < Minitest::Test 
     | 
|
| 
       105 
105 
     | 
    
         
             
                  allow_gc: false,
         
     | 
| 
       106 
106 
     | 
    
         
             
                  quirks_mode: false,
         
     | 
| 
       107 
107 
     | 
    
         
             
                  allow_invalid_unicode: true,
         
     | 
| 
      
 108 
     | 
    
         
            +
                  float_format: '%0.13g',
         
     | 
| 
       108 
109 
     | 
    
         
             
                  float_precision: 13,
         
     | 
| 
       109 
110 
     | 
    
         
             
                  mode: :strict,
         
     | 
| 
       110 
111 
     | 
    
         
             
                  escape_mode: :ascii,
         
     | 
| 
         @@ -416,6 +417,11 @@ class Juice < Minitest::Test 
     | 
|
| 
       416 
417 
     | 
    
         
             
                }
         
     | 
| 
       417 
418 
     | 
    
         
             
              end
         
     | 
| 
       418 
419 
     | 
    
         | 
| 
      
 420 
     | 
    
         
            +
              def test_dump_float
         
     | 
| 
      
 421 
     | 
    
         
            +
                json = Oj.dump(1.23e-2, :mode => :null, :float_format => '%0.4f')
         
     | 
| 
      
 422 
     | 
    
         
            +
                assert_equal('0.0123', json)
         
     | 
| 
      
 423 
     | 
    
         
            +
              end
         
     | 
| 
      
 424 
     | 
    
         
            +
             
     | 
| 
       419 
425 
     | 
    
         
             
              # Class
         
     | 
| 
       420 
426 
     | 
    
         
             
              def test_class_null
         
     | 
| 
       421 
427 
     | 
    
         
             
                json = Oj.dump(Juice, :mode => :null)
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,15 +1,29 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: oj
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.16.3
         
     | 
| 
       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-12-11 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: bigdecimal
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '3.0'
         
     | 
| 
      
 20 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 22 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 23 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 25 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '3.0'
         
     | 
| 
       13 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
28 
     | 
    
         
             
              name: minitest
         
     | 
| 
       15 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -294,7 +308,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       294 
308 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       295 
309 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       296 
310 
     | 
    
         
             
            requirements: []
         
     | 
| 
       297 
     | 
    
         
            -
            rubygems_version: 3.4. 
     | 
| 
      
 311 
     | 
    
         
            +
            rubygems_version: 3.4.10
         
     | 
| 
       298 
312 
     | 
    
         
             
            signing_key:
         
     | 
| 
       299 
313 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       300 
314 
     | 
    
         
             
            summary: A fast JSON parser and serializer.
         
     |