oj 3.10.2 → 3.10.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|