oj 3.10.1 → 3.10.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/oj/object.c +2 -1
- data/ext/oj/parse.c +6 -0
- data/lib/oj/version.rb +1 -1
- data/pages/Rails.md +38 -0
- data/test/test_object.rb +8 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0569d0892b3b9d79f0edf0866d843adb9abc21046838be295164884edb930b61'
|
4
|
+
data.tar.gz: ff04edae94da97c911b19c93015035df9fb3ce89162c0afc1df036e0f675e65f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d5a28e21b6c37bc5a11917512906c040cf8a0b038a07f23c0447a1705986fe98803191f6d2462e4f0ec67f7f3694cd9c61d0149d782f0a5e5f6b6d36a88d372
|
7
|
+
data.tar.gz: 789c0fdfe061476ee5e5c4bbe84519e7b1a6a015436e7fbe2cdb5f7922d6eef8de5914bd61488be4c297633e053f2a217630f7358796de9ba746aa6935466983
|
data/ext/oj/object.c
CHANGED
@@ -669,7 +669,8 @@ static void
|
|
669
669
|
array_append_cstr(ParseInfo pi, const char *str, size_t len, const char *orig) {
|
670
670
|
volatile VALUE rval = Qnil;
|
671
671
|
|
672
|
-
|
672
|
+
// orig lets us know whether the string was ^r1 or \u005er1
|
673
|
+
if (3 <= len && 0 != pi->circ_array && '^' == orig[0] && 0 == rb_array_len(stack_peek(&pi->stack)->val)) {
|
673
674
|
if ('i' == str[1]) {
|
674
675
|
long i = read_long(str + 2, len - 2);
|
675
676
|
|
data/ext/oj/parse.c
CHANGED
@@ -1041,6 +1041,12 @@ CLEANUP:
|
|
1041
1041
|
if (pi->str_rx.head != oj_default_options.str_rx.head) {
|
1042
1042
|
oj_rxclass_cleanup(&pi->str_rx);
|
1043
1043
|
}
|
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
|
+
|
1044
1050
|
if (err_has(&pi->err)) {
|
1045
1051
|
rb_set_errinfo(Qnil);
|
1046
1052
|
if (Qnil != pi->err_class) {
|
data/lib/oj/version.rb
CHANGED
data/pages/Rails.md
CHANGED
@@ -80,6 +80,44 @@ The classes that can be put in optimized mode and are optimized when
|
|
80
80
|
The ActiveSupport decoder is the `JSON.parse()` method. Calling the
|
81
81
|
`Oj::Rails.set_decoder()` method replaces that method with the Oj equivalent.
|
82
82
|
|
83
|
+
### Usage in Rails 3
|
84
|
+
|
85
|
+
To support Rails 3 you can create a new module mixin to prepend to controllers:
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
require 'oj'
|
89
|
+
|
90
|
+
module OjJsonEncoder
|
91
|
+
def render(options = nil, extra_options = {}, &block)
|
92
|
+
if options && options[:json]
|
93
|
+
obj = options.delete(:json)
|
94
|
+
options[:text] = Oj.dump(obj, :mode => :rails)
|
95
|
+
options[:content_type] = 'application/json'
|
96
|
+
end
|
97
|
+
super
|
98
|
+
end
|
99
|
+
end
|
100
|
+
```
|
101
|
+
|
102
|
+
Usage:
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
class MyController < ApplicationController
|
106
|
+
prepend OjJsonEncoder
|
107
|
+
def index
|
108
|
+
render :json => { :hello => 'world' }
|
109
|
+
end
|
110
|
+
end
|
111
|
+
```
|
112
|
+
|
113
|
+
### Older Ruby Version Support (Pre 2.3.0)
|
114
|
+
|
115
|
+
If you are using an older version of Ruby, you can pin `oj` to an earlier version in your Gemfile:
|
116
|
+
|
117
|
+
```ruby
|
118
|
+
gem 'oj', '3.7.12'
|
119
|
+
```
|
120
|
+
|
83
121
|
### Notes:
|
84
122
|
|
85
123
|
1. Optimized Floats set the significant digits to 16. This is different than
|
data/test/test_object.rb
CHANGED
@@ -869,6 +869,14 @@ class ObjectJuice < Minitest::Test
|
|
869
869
|
assert_equal(a2[1].__id__, a2.__id__)
|
870
870
|
end
|
871
871
|
|
872
|
+
def test_circular_array3
|
873
|
+
a = ['^r1']
|
874
|
+
json = Oj.dump(a, mode: :object, circular: true)
|
875
|
+
assert_equal(%{["^i1","\\u005er1"]}, json)
|
876
|
+
a2 = Oj.load(json, mode: :object, circular: true)
|
877
|
+
assert_equal(a, a2)
|
878
|
+
end
|
879
|
+
|
872
880
|
def test_circular_hash2
|
873
881
|
h = { 'a' => 7 }
|
874
882
|
h['b'] = h
|
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.2
|
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-01-
|
11
|
+
date: 2020-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -283,7 +283,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
283
283
|
- !ruby/object:Gem::Version
|
284
284
|
version: '0'
|
285
285
|
requirements: []
|
286
|
-
rubygems_version: 3.
|
286
|
+
rubygems_version: 3.1.2
|
287
287
|
signing_key:
|
288
288
|
specification_version: 4
|
289
289
|
summary: A fast JSON parser and serializer.
|