oj 3.10.2 → 3.10.5
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/ext/oj/dump.c +1 -1
- data/ext/oj/parse.c +13 -12
- data/ext/oj/rails.c +0 -1
- data/lib/oj/version.rb +1 -1
- data/pages/Rails.md +4 -3
- data/test/bar.rb +21 -8
- data/test/json_gem/json_common_interface_test.rb +2 -2
- 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: 3c5237f8fde35d255bce0e58bbb8de4cd74e6e1f8ea563ce6413eeec4605ec46
         | 
| 4 | 
            +
              data.tar.gz: 97eeb9614491ed377ad2336bda388e0d3eeac843d61d4afea44e80bcf9e7782b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7fd89f9ca4e2ef290e4096d3d486f118ab5cf93b3b54f14b0873561f0ec486ab700ac04e3556db6bd7a82f53e81d10f00eb7ecb524a012266018b9b080c89726
         | 
| 7 | 
            +
              data.tar.gz: 0436f2949fc7881f194c6f781f489a9a47dbacb630390308fc1b48c2e047cbbc160338ab51f94998c9a08f39e996c9db27a4dd341d7870299de78d41f2d8a659
         | 
    
        data/ext/oj/dump.c
    CHANGED
    
    | @@ -111,7 +111,7 @@ static char	rails_friendly_chars[256] = "\ | |
| 111 111 | 
             
            11111111111111111111111111111111\
         | 
| 112 112 | 
             
            11111111111111111111111111111111\
         | 
| 113 113 | 
             
            11111111111111111111111111111111\
         | 
| 114 | 
            -
             | 
| 114 | 
            +
            11111111111111111111111111111111";
         | 
| 115 115 |  | 
| 116 116 | 
             
            static void
         | 
| 117 117 | 
             
            raise_strict(VALUE obj) {
         | 
    
        data/ext/oj/parse.c
    CHANGED
    
    | @@ -795,13 +795,13 @@ oj_num_as_value(NumInfo ni) { | |
| 795 795 | 
             
            	    }
         | 
| 796 796 | 
             
            	} else {
         | 
| 797 797 | 
             
            	    // All these machinations are to get rounding to work better.
         | 
| 798 | 
            -
            	    long double	 | 
| 798 | 
            +
            	    long double	ld = (long double)ni->i * (long double)ni->div + (long double)ni->num;
         | 
| 799 799 | 
             
            	    int		x = (int)((int64_t)ni->exp - ni->di);
         | 
| 800 800 |  | 
| 801 801 | 
             
            	    // Rounding sometimes cuts off the last digit even if there are only
         | 
| 802 802 | 
             
            	    // 15 digits. This attempts to fix those few cases where this
         | 
| 803 803 | 
             
            	    // occurs.
         | 
| 804 | 
            -
            	    if ((long double)INT64_MAX >  | 
| 804 | 
            +
            	    if ((long double)INT64_MAX > ld && (int64_t)ld != (ni->i * ni->div + ni->num)) {
         | 
| 805 805 | 
             
            		volatile VALUE	bd = rb_str_new(ni->str, ni->len);
         | 
| 806 806 |  | 
| 807 807 | 
             
            		rnum = rb_rescue2(parse_big_decimal, bd, rescue_big_decimal, bd, rb_eException, 0);
         | 
| @@ -809,16 +809,23 @@ oj_num_as_value(NumInfo ni) { | |
| 809 809 | 
             
            		    rnum = rb_funcall(rnum, rb_intern("to_f"), 0);
         | 
| 810 810 | 
             
            		}
         | 
| 811 811 | 
             
            	    } else {
         | 
| 812 | 
            -
            		d | 
| 812 | 
            +
            		double	d;
         | 
| 813 | 
            +
             | 
| 814 | 
            +
            		ld = roundl(ld);
         | 
| 815 | 
            +
            		// You would expect that staying with a long double would be
         | 
| 816 | 
            +
            		// more accurate but it fails to match what Ruby generates so
         | 
| 817 | 
            +
            		// drop down to a double.
         | 
| 813 818 | 
             
            		if (0 < x) {
         | 
| 814 | 
            -
            		    d  | 
| 819 | 
            +
            		    d = (double)ld * pow(10.0, x);
         | 
| 815 820 | 
             
            		} else if (0 > x) {
         | 
| 816 | 
            -
            		    d  | 
| 821 | 
            +
            		    d = (double)ld / pow(10.0, -x);
         | 
| 822 | 
            +
            		} else {
         | 
| 823 | 
            +
            		    d = (double)ld;
         | 
| 817 824 | 
             
            		}
         | 
| 818 825 | 
             
            		if (ni->neg) {
         | 
| 819 826 | 
             
            		    d = -d;
         | 
| 820 827 | 
             
            		}
         | 
| 821 | 
            -
            		rnum = rb_float_new( | 
| 828 | 
            +
            		rnum = rb_float_new(d);
         | 
| 822 829 | 
             
            	    }
         | 
| 823 830 | 
             
            	}
         | 
| 824 831 | 
             
                }
         | 
| @@ -1041,12 +1048,6 @@ CLEANUP: | |
| 1041 1048 | 
             
                if (pi->str_rx.head != oj_default_options.str_rx.head) {
         | 
| 1042 1049 | 
             
            	oj_rxclass_cleanup(&pi->str_rx);
         | 
| 1043 1050 | 
             
                }
         | 
| 1044 | 
            -
                // TBD if validate only then (Qundef == result ??)
         | 
| 1045 | 
            -
                //  if pi->err or 0 != line
         | 
| 1046 | 
            -
                // 	  rb_get_errinfo();??
         | 
| 1047 | 
            -
                //    rb_set_errinfo(Qnil);
         | 
| 1048 | 
            -
                //  return nil or error
         | 
| 1049 | 
            -
             | 
| 1050 1051 | 
             
                if (err_has(&pi->err)) {
         | 
| 1051 1052 | 
             
            	rb_set_errinfo(Qnil);
         | 
| 1052 1053 | 
             
            	if (Qnil != pi->err_class) {
         | 
    
        data/ext/oj/rails.c
    CHANGED
    
    
    
        data/lib/oj/version.rb
    CHANGED
    
    
    
        data/pages/Rails.md
    CHANGED
    
    | @@ -89,10 +89,11 @@ require 'oj' | |
| 89 89 |  | 
| 90 90 | 
             
            module OjJsonEncoder
         | 
| 91 91 | 
             
              def render(options = nil, extra_options = {}, &block)
         | 
| 92 | 
            -
                if options && options[:json]
         | 
| 92 | 
            +
                if options && options.is_a?(Hash) && options[:json]
         | 
| 93 93 | 
             
                  obj = options.delete(:json)
         | 
| 94 | 
            -
                   | 
| 95 | 
            -
                  options[: | 
| 94 | 
            +
                  obj = Oj.dump(obj, :mode => :rails) unless obj.is_a?(String)
         | 
| 95 | 
            +
                  options[:text] = obj
         | 
| 96 | 
            +
                  response.content_type ||= Mime::JSON
         | 
| 96 97 | 
             
                end
         | 
| 97 98 | 
             
                super
         | 
| 98 99 | 
             
              end
         | 
    
        data/test/bar.rb
    CHANGED
    
    | @@ -1,5 +1,4 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
            # encoding: UTF-8
         | 
| 3 2 |  | 
| 4 3 | 
             
            $: << File.dirname(__FILE__)
         | 
| 5 4 | 
             
            $oj_dir = File.dirname(File.expand_path(File.dirname(__FILE__)))
         | 
| @@ -7,16 +6,30 @@ $oj_dir = File.dirname(File.expand_path(File.dirname(__FILE__))) | |
| 7 6 | 
             
              $: << File.join($oj_dir, dir)
         | 
| 8 7 | 
             
            end
         | 
| 9 8 |  | 
| 10 | 
            -
            require 'rails'
         | 
| 11 9 | 
             
            require 'active_support'
         | 
| 12 | 
            -
            require  | 
| 10 | 
            +
            require "active_support/json"
         | 
| 13 11 |  | 
| 14 | 
            -
             | 
| 12 | 
            +
            $s = "\u2014 & \n \u{1F618}"
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            =begin
         | 
| 15 | 
            +
            def check(label)
         | 
| 16 | 
            +
              puts "\n--- #{label} --------------------"
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              ActiveSupport::JSON::Encoding.use_standard_json_time_format = true
         | 
| 19 | 
            +
              puts "with standard_json == true: t.to_json - #{$t.to_json}"
         | 
| 20 | 
            +
              ActiveSupport::JSON::Encoding.use_standard_json_time_format = false
         | 
| 21 | 
            +
              puts "with standard_json == false: t.to_json - #{$t.to_json}"
         | 
| 22 | 
            +
            end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            check('Before Oj')
         | 
| 25 | 
            +
            =end
         | 
| 15 26 |  | 
| 16 | 
            -
             | 
| 27 | 
            +
            require 'oj'
         | 
| 17 28 |  | 
| 18 | 
            -
             | 
| 29 | 
            +
            ActiveSupport::JSON::Encoding.escape_html_entities_in_json = false
         | 
| 30 | 
            +
            puts "ActiveSupport.encode(s) - #{ActiveSupport::JSON.encode($s)}"
         | 
| 19 31 |  | 
| 20 | 
            -
             | 
| 32 | 
            +
            Oj.optimize_rails
         | 
| 33 | 
            +
            Oj.default_options = { mode: :rails }
         | 
| 21 34 |  | 
| 22 | 
            -
            puts Oj.dump( | 
| 35 | 
            +
            puts "Oj.dump(s) - #{Oj.dump($s)}"
         | 
| @@ -15,7 +15,7 @@ class JSONCommonInterfaceTest < Test::Unit::TestCase | |
| 15 15 | 
             
              def setup
         | 
| 16 16 | 
             
                @hash = {
         | 
| 17 17 | 
             
                  'a' => 2,
         | 
| 18 | 
            -
                  'b' =>  | 
| 18 | 
            +
                  'b' => 5.23683071,
         | 
| 19 19 | 
             
                  'c' => 'c',
         | 
| 20 20 | 
             
                  'd' => [ 1, "b", 3.14 ],
         | 
| 21 21 | 
             
                  'e' => { 'foo' => 'bar' },
         | 
| @@ -23,7 +23,7 @@ class JSONCommonInterfaceTest < Test::Unit::TestCase | |
| 23 23 | 
             
                  'h' => 1000.0,
         | 
| 24 24 | 
             
                  'i' => 0.001
         | 
| 25 25 | 
             
                }
         | 
| 26 | 
            -
                @json = '{"a":2,"b": | 
| 26 | 
            +
                @json = '{"a":2,"b":5.23683071,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},'\
         | 
| 27 27 | 
             
                  '"g":"\\"\\u0000\\u001f","h":1000.0,"i":0.001}'
         | 
| 28 28 | 
             
              end
         | 
| 29 29 |  | 
    
        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.10. | 
| 4 | 
            +
              version: 3.10.5
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Peter Ohler
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020- | 
| 11 | 
            +
            date: 2020-03-03 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rake-compiler
         |