multi_json 1.7.7 → 1.7.8
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.
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +1 -1
- data/lib/multi_json.rb +16 -19
- data/lib/multi_json/load_error.rb +11 -0
- data/lib/multi_json/vendor/okjson.rb +12 -6
- data/lib/multi_json/version.rb +1 -1
- data/spec/adapter_shared_example.rb +3 -3
- data/spec/has_options.rb +108 -63
- data/spec/json_common_shared_example.rb +3 -3
- data/spec/multi_json_spec.rb +20 -20
- metadata +39 -28
- metadata.gz.sig +2 -3
- checksums.yaml +0 -7
- checksums.yaml.gz.sig +0 -1
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
1.7.8
|
2
|
+
-----
|
3
|
+
* [Reorder JrJackson before json_gem](https://github.com/intridea/multi_json/commit/315b6e460b6e4dcdb6c82e04e4be8ee975d395da)
|
4
|
+
* [Update vendored OkJson to version 43](https://github.com/intridea/multi_json/commit/99a6b662f6ef4036e3ee94d7eb547fa72fb2ab50)
|
5
|
+
|
1
6
|
1.7.7
|
2
7
|
-----
|
3
8
|
* [Fix options caching issues](https://github.com/intridea/multi_json/commit/a3f14c3661688c5927638fa6088c7b46a67e875e)
|
data/Gemfile
CHANGED
data/lib/multi_json.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'multi_json/options'
|
2
2
|
require 'multi_json/version'
|
3
|
+
require 'multi_json/load_error'
|
3
4
|
|
4
5
|
module MultiJson
|
5
6
|
include Options
|
@@ -7,7 +8,7 @@ module MultiJson
|
|
7
8
|
|
8
9
|
class << self
|
9
10
|
def cached_options
|
10
|
-
@cached_options
|
11
|
+
@cached_options ||= {}
|
11
12
|
end
|
12
13
|
|
13
14
|
def reset_cached_options!
|
@@ -15,16 +16,6 @@ module MultiJson
|
|
15
16
|
end
|
16
17
|
end
|
17
18
|
|
18
|
-
class LoadError < StandardError
|
19
|
-
attr_reader :data
|
20
|
-
def initialize(message='', backtrace=[], data='')
|
21
|
-
super(message)
|
22
|
-
self.set_backtrace(backtrace)
|
23
|
-
@data = data
|
24
|
-
end
|
25
|
-
end
|
26
|
-
DecodeError = LoadError # Legacy support
|
27
|
-
|
28
19
|
# Since `default_options` is deprecated, the
|
29
20
|
# reader is aliased to `dump_options` and the
|
30
21
|
# writer sets both `dump_options` and `load_options`
|
@@ -42,9 +33,9 @@ module MultiJson
|
|
42
33
|
REQUIREMENT_MAP = [
|
43
34
|
['oj', :oj],
|
44
35
|
['yajl', :yajl],
|
36
|
+
['jrjackson', :jr_jackson],
|
45
37
|
['json/ext', :json_gem],
|
46
38
|
['gson', :gson],
|
47
|
-
['jrjackson', :jr_jackson],
|
48
39
|
['json/pure', :json_pure]
|
49
40
|
]
|
50
41
|
|
@@ -55,9 +46,9 @@ module MultiJson
|
|
55
46
|
def default_adapter
|
56
47
|
return :oj if defined?(::Oj)
|
57
48
|
return :yajl if defined?(::Yajl)
|
49
|
+
return :jr_jackson if defined?(::JrJackson)
|
58
50
|
return :json_gem if defined?(::JSON)
|
59
51
|
return :gson if defined?(::Gson)
|
60
|
-
return :jr_jackson if defined?(::JrJackson)
|
61
52
|
|
62
53
|
REQUIREMENT_MAP.each do |library, adapter|
|
63
54
|
begin
|
@@ -103,18 +94,15 @@ module MultiJson
|
|
103
94
|
def load_adapter(new_adapter)
|
104
95
|
case new_adapter
|
105
96
|
when String, Symbol
|
106
|
-
|
107
|
-
require "multi_json/adapters/#{new_adapter}"
|
108
|
-
klass_name = new_adapter.to_s.split('_').map(&:capitalize) * ''
|
109
|
-
MultiJson::Adapters.const_get(klass_name)
|
97
|
+
load_adapter_from_string_name new_adapter.to_s
|
110
98
|
when NilClass, FalseClass
|
111
99
|
load_adapter default_adapter
|
112
100
|
when Class, Module
|
113
101
|
new_adapter
|
114
102
|
else
|
115
|
-
raise
|
103
|
+
raise ::LoadError
|
116
104
|
end
|
117
|
-
rescue
|
105
|
+
rescue ::LoadError
|
118
106
|
raise ArgumentError, 'Did not recognize your adapter specification.'
|
119
107
|
end
|
120
108
|
|
@@ -157,4 +145,13 @@ module MultiJson
|
|
157
145
|
end
|
158
146
|
alias with_engine with_adapter
|
159
147
|
|
148
|
+
private
|
149
|
+
|
150
|
+
def load_adapter_from_string_name(name)
|
151
|
+
name = ALIASES.fetch(name, name)
|
152
|
+
require "multi_json/adapters/#{name}"
|
153
|
+
klass_name = name.to_s.split('_').map(&:capitalize) * ''
|
154
|
+
MultiJson::Adapters.const_get(klass_name)
|
155
|
+
end
|
156
|
+
|
160
157
|
end
|
@@ -24,12 +24,12 @@
|
|
24
24
|
|
25
25
|
require 'stringio'
|
26
26
|
|
27
|
-
# Some parts adapted from
|
28
|
-
# http://golang.org/src/pkg/json/decode.go and
|
29
|
-
# http://golang.org/src/pkg/utf8/utf8.go
|
30
27
|
module MultiJson
|
28
|
+
# Some parts adapted from
|
29
|
+
# http://golang.org/src/pkg/json/decode.go and
|
30
|
+
# http://golang.org/src/pkg/utf8/utf8.go
|
31
31
|
module OkJson
|
32
|
-
Upstream = '
|
32
|
+
Upstream = '43'
|
33
33
|
extend self
|
34
34
|
|
35
35
|
|
@@ -64,7 +64,8 @@ module MultiJson
|
|
64
64
|
case x
|
65
65
|
when Hash then objenc(x)
|
66
66
|
when Array then arrenc(x)
|
67
|
-
else
|
67
|
+
else
|
68
|
+
raise Error, 'root value must be an Array or a Hash'
|
68
69
|
end
|
69
70
|
end
|
70
71
|
|
@@ -465,11 +466,16 @@ module MultiJson
|
|
465
466
|
# In ruby >= 1.9, s[r] is a codepoint, not a byte.
|
466
467
|
if rubydoesenc?
|
467
468
|
begin
|
468
|
-
c.ord
|
469
|
+
# c.ord will raise an error if c is invalid UTF-8
|
470
|
+
if c.ord < Spc.ord
|
471
|
+
c = "\\u%04x" % [c.ord]
|
472
|
+
end
|
469
473
|
t.write(c)
|
470
474
|
rescue
|
471
475
|
t.write(Ustrerr)
|
472
476
|
end
|
477
|
+
elsif c < Spc
|
478
|
+
t.write("\\u%04x" % c)
|
473
479
|
elsif Spc <= c && c <= ?~
|
474
480
|
t.putc(c)
|
475
481
|
else
|
data/lib/multi_json/version.rb
CHANGED
@@ -2,7 +2,7 @@ module MultiJson
|
|
2
2
|
class Version
|
3
3
|
MAJOR = 1 unless defined? MultiJson::Version::MAJOR
|
4
4
|
MINOR = 7 unless defined? MultiJson::Version::MINOR
|
5
|
-
PATCH =
|
5
|
+
PATCH = 8 unless defined? MultiJson::Version::PATCH
|
6
6
|
PRE = nil unless defined? MultiJson::Version::PRE
|
7
7
|
|
8
8
|
class << self
|
@@ -23,7 +23,7 @@ shared_examples_for 'an adapter' do |adapter|
|
|
23
23
|
before{ MultiJson.dump_options = MultiJson.adapter.dump_options = {} }
|
24
24
|
|
25
25
|
after do
|
26
|
-
MultiJson.adapter.instance.
|
26
|
+
expect(MultiJson.adapter.instance).to receive(:dump).with(1, :foo => 'bar', :fizz => 'buzz')
|
27
27
|
MultiJson.dump(1, :fizz => 'buzz')
|
28
28
|
MultiJson.dump_options = MultiJson.adapter.dump_options = nil
|
29
29
|
end
|
@@ -100,7 +100,7 @@ shared_examples_for 'an adapter' do |adapter|
|
|
100
100
|
end
|
101
101
|
|
102
102
|
it 'passes options to the adapter' do
|
103
|
-
MultiJson.adapter.
|
103
|
+
expect(MultiJson.adapter).to receive(:dump).with('foo', {:bar => :baz})
|
104
104
|
MultiJson.dump('foo', :bar => :baz)
|
105
105
|
end
|
106
106
|
|
@@ -131,7 +131,7 @@ shared_examples_for 'an adapter' do |adapter|
|
|
131
131
|
before{ MultiJson.load_options = MultiJson.adapter.load_options = {} }
|
132
132
|
|
133
133
|
after do
|
134
|
-
MultiJson.adapter.instance.
|
134
|
+
expect(MultiJson.adapter.instance).to receive(:load).with('1', :foo => 'bar', :fizz => 'buzz')
|
135
135
|
MultiJson.load('1', :fizz => 'buzz')
|
136
136
|
MultiJson.load_options = MultiJson.adapter.load_options = nil
|
137
137
|
end
|
data/spec/has_options.rb
CHANGED
@@ -6,69 +6,114 @@ shared_examples_for 'has options' do |object|
|
|
6
6
|
subject{ object }
|
7
7
|
end
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
9
|
+
describe "dump options" do
|
10
|
+
|
11
|
+
before do
|
12
|
+
subject.dump_options = nil
|
13
|
+
end
|
14
|
+
|
15
|
+
after do
|
16
|
+
subject.dump_options = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'returns default options if not set' do
|
20
|
+
expect(subject.dump_options).to eq(subject.default_dump_options)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'allows hashes' do
|
24
|
+
subject.dump_options = {:foo => 'bar'}
|
25
|
+
expect(subject.dump_options).to eq(:foo => 'bar')
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'allows objects that implement #to_hash' do
|
29
|
+
value = Class.new do
|
30
|
+
def to_hash
|
31
|
+
{:foo => 'bar'}
|
32
|
+
end
|
33
|
+
end.new
|
34
|
+
|
35
|
+
subject.dump_options = value
|
36
|
+
expect(subject.dump_options).to eq(:foo => 'bar')
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'evaluates lambda returning options (with args)' do
|
40
|
+
subject.dump_options = lambda{ |a1, a2| { a1 => a2 }}
|
41
|
+
expect(subject.dump_options('1', '2')).to eq('1' => '2')
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'evaluates lambda returning options (with no args)' do
|
45
|
+
subject.dump_options = lambda{{:foo => 'bar'}}
|
46
|
+
expect(subject.dump_options).to eq(:foo => 'bar')
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'returns empty hash in all other cases' do
|
50
|
+
subject.dump_options = true
|
51
|
+
expect(subject.dump_options).to eq(subject.default_dump_options)
|
52
|
+
|
53
|
+
subject.dump_options = false
|
54
|
+
expect(subject.dump_options).to eq(subject.default_dump_options)
|
55
|
+
|
56
|
+
subject.dump_options = 10
|
57
|
+
expect(subject.dump_options).to eq(subject.default_dump_options)
|
58
|
+
|
59
|
+
subject.dump_options = nil
|
60
|
+
expect(subject.dump_options).to eq(subject.default_dump_options)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "load options" do
|
65
|
+
|
66
|
+
before do
|
67
|
+
subject.load_options = nil
|
68
|
+
end
|
69
|
+
|
70
|
+
after do
|
71
|
+
subject.load_options = nil
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'returns default options if not set' do
|
75
|
+
expect(subject.load_options).to eq(subject.default_load_options)
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'allows hashes' do
|
79
|
+
subject.load_options = {:foo => 'bar'}
|
80
|
+
expect(subject.load_options).to eq(:foo => 'bar')
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'allows objects that implement #to_hash' do
|
84
|
+
value = Class.new do
|
85
|
+
def to_hash
|
86
|
+
{:foo => 'bar'}
|
87
|
+
end
|
88
|
+
end.new
|
89
|
+
|
90
|
+
subject.load_options = value
|
91
|
+
expect(subject.load_options).to eq(:foo => 'bar')
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'evaluates lambda returning options (with args)' do
|
95
|
+
subject.load_options = lambda{ |a1, a2| { a1 => a2 }}
|
96
|
+
expect(subject.load_options('1', '2')).to eq('1' => '2')
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'evaluates lambda returning options (with no args)' do
|
100
|
+
subject.load_options = lambda{{:foo => 'bar'}}
|
101
|
+
expect(subject.load_options).to eq(:foo => 'bar')
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'returns empty hash in all other cases' do
|
105
|
+
subject.load_options = true
|
106
|
+
expect(subject.load_options).to eq(subject.default_load_options)
|
107
|
+
|
108
|
+
subject.load_options = false
|
109
|
+
expect(subject.load_options).to eq(subject.default_load_options)
|
110
|
+
|
111
|
+
subject.load_options = 10
|
112
|
+
expect(subject.load_options).to eq(subject.default_load_options)
|
113
|
+
|
114
|
+
subject.load_options = nil
|
115
|
+
expect(subject.load_options).to eq(subject.default_load_options)
|
72
116
|
end
|
73
117
|
end
|
118
|
+
|
74
119
|
end
|
@@ -7,7 +7,7 @@ shared_examples_for 'JSON-like adapter' do |adapter|
|
|
7
7
|
describe 'with :pretty option set to true' do
|
8
8
|
it 'passes default pretty options' do
|
9
9
|
object = 'foo'
|
10
|
-
object.
|
10
|
+
expect(object).to receive(:to_json).with(JSON::PRETTY_STATE_PROTOTYPE.to_h)
|
11
11
|
MultiJson.dump(object, :pretty => true)
|
12
12
|
end
|
13
13
|
end
|
@@ -15,7 +15,7 @@ shared_examples_for 'JSON-like adapter' do |adapter|
|
|
15
15
|
describe 'with :indent option' do
|
16
16
|
it 'passes it on dump' do
|
17
17
|
object = 'foo'
|
18
|
-
object.
|
18
|
+
expect(object).to receive(:to_json).with(:indent => "\t")
|
19
19
|
MultiJson.dump(object, :indent => "\t")
|
20
20
|
end
|
21
21
|
end
|
@@ -23,7 +23,7 @@ shared_examples_for 'JSON-like adapter' do |adapter|
|
|
23
23
|
|
24
24
|
describe '.load' do
|
25
25
|
it 'passes :quirks_mode option' do
|
26
|
-
::JSON.
|
26
|
+
expect(::JSON).to receive(:parse).with('[123]', {:quirks_mode => false, :create_additions => false})
|
27
27
|
MultiJson.load('[123]', :quirks_mode => false)
|
28
28
|
end
|
29
29
|
end
|
data/spec/multi_json_spec.rb
CHANGED
@@ -20,22 +20,22 @@ describe 'MultiJson' do
|
|
20
20
|
MultiJson::REQUIREMENT_MAP.each_with_index do |(library, adapter), index|
|
21
21
|
MultiJson::REQUIREMENT_MAP[index] = ["foo/#{library}", adapter]
|
22
22
|
end
|
23
|
-
Object.send :remove_const, :JSON if
|
24
|
-
Object.send :remove_const, :Oj if
|
25
|
-
Object.send :remove_const, :Yajl if
|
26
|
-
Object.send :remove_const, :Gson if
|
27
|
-
Object.send :remove_const, :JrJackson if
|
23
|
+
Object.send :remove_const, :JSON if instance_variable_defined?(:@old_json)
|
24
|
+
Object.send :remove_const, :Oj if instance_variable_defined?(:@old_oj)
|
25
|
+
Object.send :remove_const, :Yajl if instance_variable_defined?(:@old_yajl)
|
26
|
+
Object.send :remove_const, :Gson if instance_variable_defined?(:@old_gson)
|
27
|
+
Object.send :remove_const, :JrJackson if instance_variable_defined?(:@old_jrjackson)
|
28
28
|
end
|
29
29
|
|
30
30
|
after do
|
31
31
|
@old_map.each_with_index do |(library, adapter), index|
|
32
32
|
MultiJson::REQUIREMENT_MAP[index] = [library, adapter]
|
33
33
|
end
|
34
|
-
Object.const_set :JSON, @old_json if
|
35
|
-
Object.const_set :Oj, @old_oj if
|
36
|
-
Object.const_set :Yajl, @old_yajl if
|
37
|
-
Object.const_set :Gson, @old_gson if
|
38
|
-
Object.const_set :JrJackson, @old_jrjackson if
|
34
|
+
Object.const_set :JSON, @old_json if instance_variable_defined?(:@old_json)
|
35
|
+
Object.const_set :Oj, @old_oj if instance_variable_defined?(:@old_oj)
|
36
|
+
Object.const_set :Yajl, @old_yajl if instance_variable_defined?(:@old_yajl)
|
37
|
+
Object.const_set :Gson, @old_gson if instance_variable_defined?(:@old_gson)
|
38
|
+
Object.const_set :JrJackson, @old_jrjackson if instance_variable_defined?(:@old_jrjackson)
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'defaults to ok_json if no other json implementions are available' do
|
@@ -45,7 +45,7 @@ describe 'MultiJson' do
|
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'prints a warning' do
|
48
|
-
Kernel.
|
48
|
+
expect(Kernel).to receive(:warn).with(/warning/i)
|
49
49
|
MultiJson.default_adapter
|
50
50
|
end
|
51
51
|
end
|
@@ -74,16 +74,16 @@ describe 'MultiJson' do
|
|
74
74
|
it 'defaults to the best available gem' do
|
75
75
|
# Clear cache variable already set by previous tests
|
76
76
|
MultiJson.send(:remove_instance_variable, :@adapter)
|
77
|
-
|
78
|
-
expect(MultiJson.adapter).to eq MultiJson::Adapters::
|
77
|
+
if jruby?
|
78
|
+
expect(MultiJson.adapter.to_s).to eq 'MultiJson::Adapters::JrJackson'
|
79
79
|
else
|
80
|
-
expect(MultiJson.adapter).to eq MultiJson::Adapters::
|
80
|
+
expect(MultiJson.adapter.to_s).to eq 'MultiJson::Adapters::Oj'
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
84
|
it 'looks for adapter even if @adapter variable is nil' do
|
85
85
|
MultiJson.send(:instance_variable_set, :@adapter, nil)
|
86
|
-
MultiJson.
|
86
|
+
expect(MultiJson).to receive(:default_adapter).and_return(:ok_json)
|
87
87
|
expect(MultiJson.adapter).to eq MultiJson::Adapters::OkJson
|
88
88
|
end
|
89
89
|
|
@@ -110,8 +110,8 @@ describe 'MultiJson' do
|
|
110
110
|
|
111
111
|
context 'using one-shot parser' do
|
112
112
|
before do
|
113
|
-
MultiJson::Adapters::JsonPure.
|
114
|
-
MultiJson::Adapters::JsonPure.
|
113
|
+
expect(MultiJson::Adapters::JsonPure).to receive(:dump).once.and_return('dump_something')
|
114
|
+
expect(MultiJson::Adapters::JsonPure).to receive(:load).once.and_return('load_something')
|
115
115
|
end
|
116
116
|
|
117
117
|
it 'should use the defined parser just for the call' do
|
@@ -178,13 +178,13 @@ describe 'MultiJson' do
|
|
178
178
|
after(:all){ MultiJson.load_options = MultiJson.dump_options = nil }
|
179
179
|
|
180
180
|
it 'is deprecated' do
|
181
|
-
Kernel.
|
181
|
+
expect(Kernel).to receive(:warn).with(/deprecated/i)
|
182
182
|
silence_warnings{ MultiJson.default_options = {:foo => 'bar'} }
|
183
183
|
end
|
184
184
|
|
185
185
|
it 'sets both load and dump options' do
|
186
|
-
MultiJson.
|
187
|
-
MultiJson.
|
186
|
+
expect(MultiJson).to receive(:dump_options=).with(:foo => 'bar')
|
187
|
+
expect(MultiJson).to receive(:load_options=).with(:foo => 'bar')
|
188
188
|
silence_warnings{ MultiJson.default_options = {:foo => 'bar'} }
|
189
189
|
end
|
190
190
|
end
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: multi_json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.8
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Michael Bleigh
|
@@ -11,32 +12,39 @@ authors:
|
|
11
12
|
autorequire:
|
12
13
|
bindir: bin
|
13
14
|
cert_chain:
|
14
|
-
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
15
|
+
- !binary |-
|
16
|
+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURMakNDQWhhZ0F3SUJB
|
17
|
+
Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREE5TVE4d0RRWURWUVFEREFaelpt
|
18
|
+
VnkKYVdzeEZUQVRCZ29Ka2lhSmsvSXNaQUVaRmdWbmJXRnBiREVUTUJFR0Nn
|
19
|
+
bVNKb21UOGl4a0FSa1dBMk52YlRBZQpGdzB4TXpBeU1ETXhNREF5TWpkYUZ3
|
20
|
+
MHhOREF5TURNeE1EQXlNamRhTUQweER6QU5CZ05WQkFNTUJuTm1aWEpwCmF6
|
21
|
+
RVZNQk1HQ2dtU0pvbVQ4aXhrQVJrV0JXZHRZV2xzTVJNd0VRWUtDWkltaVpQ
|
22
|
+
eUxHUUJHUllEWTI5dE1JSUIKSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4
|
23
|
+
QU1JSUJDZ0tDQVFFQWwweDVkeDh1S3hpN1Rrckl1eUJVVEpWQgp2MW85M25V
|
24
|
+
QjlqL3k0TTk2Z1Yycll3QWNpMUpQQnNlTmQ2RnliempvM1lHdUhsN0VRSHVT
|
25
|
+
SE5hZjFwMmx4ZXcvCnk2MEpYSUpCQmdQY0RLL0tDUDROVUhvZm0wamZvWUQr
|
26
|
+
SDV1TkpmSENOcTcvWnNUeE90RTNSYTkyczBCQ01UcG0Kd0JNTWxXUjVNdGRF
|
27
|
+
aElZdUJPNFhobmVqWWdIMEwvN0JMMmx5bW50Vm5zci9hZ2RRb29qUUNOMUlR
|
28
|
+
bXNSSnZyUgpkdVpSTzN0WnZvSW8xcEJjNEpFZWhEdXFDZXlCZ1BMT3FNb0t0
|
29
|
+
UWxvbGQxVFFzMWtXVUJLN0tXTUZFaEtDL0tnCnp5ektSSFFvOXlEWXdPdllu
|
30
|
+
Z29CTFkrVC9sd0NUNGR5c3NkaHpSYmZueEFoYUt1NFNBc3NJd2FDMDF5Vm93
|
31
|
+
SUQKQVFBQm96a3dOekFKQmdOVkhSTUVBakFBTUIwR0ExVWREZ1FXQkJTMHJ1
|
32
|
+
RGZSYWs1Y2kxT3BETlgvWmRERWtJcwppVEFMQmdOVkhROEVCQU1DQkxBd0RR
|
33
|
+
WUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFISFNNcy9NUDBzT2FMa0V2NEpvCnp2
|
34
|
+
a20zcW41QTZ0MHZhSHg3NzRjbWVqeU1VKzV3eVN4UmV6c3BMN1VMaDlOZXVL
|
35
|
+
Mk9oVStPZTNUcHFyQWc1VEsKUjhHUUlMblZ1MkZlbUdBNnNBa1BEbGNQdGdB
|
36
|
+
NmllSTE5UFpPRjZIVkxtYy9JRC9kUC9OZ1pXV3pFZXFRS21jSwoyK0hNK1NF
|
37
|
+
RURoWmtTY1lla3c0Wk9lMTY0WnRaRzgxNm9BdjV4MHBHaXRTSWt1bVVwN1Y4
|
38
|
+
aUVaLzZlaHI3WTllClhPZzRlZXVuNUwvSmptakFSb1cya05kdmtSRDNjMkVl
|
39
|
+
U0xxV3ZRUnNCbHlwSGZoczZKSnVMbHlaUEdoVTNSL3YKU2YzbFZLcEJDV2dS
|
40
|
+
cEdUdnk0NVhWcEIrNTl5MzNQSm1FdVExUFRFT1l2UXlhbzlVS01BQWFBTi83
|
41
|
+
cVdRdGpsMApobHc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
42
|
+
date: 2013-08-04 00:00:00.000000000 Z
|
36
43
|
dependencies:
|
37
44
|
- !ruby/object:Gem::Dependency
|
38
45
|
name: bundler
|
39
46
|
requirement: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
40
48
|
requirements:
|
41
49
|
- - ~>
|
42
50
|
- !ruby/object:Gem::Version
|
@@ -44,6 +52,7 @@ dependencies:
|
|
44
52
|
type: :development
|
45
53
|
prerelease: false
|
46
54
|
version_requirements: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
47
56
|
requirements:
|
48
57
|
- - ~>
|
49
58
|
- !ruby/object:Gem::Version
|
@@ -86,6 +95,7 @@ files:
|
|
86
95
|
- lib/multi_json/adapters/ok_json.rb
|
87
96
|
- lib/multi_json/adapters/yajl.rb
|
88
97
|
- lib/multi_json/convertible_hash_keys.rb
|
98
|
+
- lib/multi_json/load_error.rb
|
89
99
|
- lib/multi_json/options.rb
|
90
100
|
- lib/multi_json/vendor/okjson.rb
|
91
101
|
- lib/multi_json/version.rb
|
@@ -93,26 +103,27 @@ files:
|
|
93
103
|
homepage: http://github.com/intridea/multi_json
|
94
104
|
licenses:
|
95
105
|
- MIT
|
96
|
-
metadata: {}
|
97
106
|
post_install_message:
|
98
107
|
rdoc_options: []
|
99
108
|
require_paths:
|
100
109
|
- lib
|
101
110
|
required_ruby_version: !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
102
112
|
requirements:
|
103
|
-
- - '>='
|
113
|
+
- - ! '>='
|
104
114
|
- !ruby/object:Gem::Version
|
105
115
|
version: '0'
|
106
116
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
107
118
|
requirements:
|
108
|
-
- - '>='
|
119
|
+
- - ! '>='
|
109
120
|
- !ruby/object:Gem::Version
|
110
121
|
version: 1.3.5
|
111
122
|
requirements: []
|
112
123
|
rubyforge_project:
|
113
|
-
rubygems_version:
|
124
|
+
rubygems_version: 1.8.23
|
114
125
|
signing_key:
|
115
|
-
specification_version:
|
126
|
+
specification_version: 3
|
116
127
|
summary: A common interface to multiple JSON libraries.
|
117
128
|
test_files:
|
118
129
|
- spec/adapter_shared_example.rb
|
metadata.gz.sig
CHANGED
@@ -1,3 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#��Q�S�=�1 c4֠,-4��J����l.r���.�~����w-(�L-��Gyt�o��9ʑ��U�k�#0�@j�[+�F��:�
|
1
|
+
Z�-�R��7����T�j��;���S�`�����M��� ��ʶ?�W�f�6J���5μRpl&r���/�,�U�ƒQ ��f��l0ɲ�FƨfE�Ld)1�H���f.
|
2
|
+
N_`~�{\Q�f��8���"�8�e�"#��)1;�G�_']��/���<��·4���7��WEh"�71.�4�y�T��˦0EPi���ZG91n�)��9WI��x�)�(�k�յ��N��!����g�Mbʘ
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 1526efc5eb9f327a9e7d99b8334583259f52ec51
|
4
|
-
data.tar.gz: 665a9bc1822afd536e0564d0e2743934652aa068
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 205f05da917cb2cc834962ac06189ef06e11b6ee47ef0f2162e6afa0849a6002610ecdd3e8524daf6c7835e500e1dd46ba888e4a5e84c2951653475d2c36e4b3
|
7
|
-
data.tar.gz: cdaf1b1d9f0ab8242c93576c63d1b80b96752043cfe6c511fdcf7bf3757fb74816486a667c37c803e0fdb23493736bc50baa840423192e48ef0ac6f8dbffce4b
|
checksums.yaml.gz.sig
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
nH�:%b>��R$��u�=z��Y�J?^Q����pȩ4|{�|f@��&��JYK&�ʯ#+N�"h\3�+R5�S''����xF=��K!�dfNi��S�˵w�T���=4�Էˑ�o�3�]X���`��B�hE�
|