multi_json 1.7.7 → 1.7.8

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
Binary file
@@ -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
@@ -24,7 +24,7 @@ end
24
24
 
25
25
  group :test do
26
26
  gem 'coveralls', :require => false
27
- gem 'rspec', '>= 2.11'
27
+ gem 'rspec', '>= 2.14'
28
28
  gem 'simplecov', :require => false
29
29
  end
30
30
 
@@ -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 || reset_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
- new_adapter = ALIASES.fetch(new_adapter.to_s, new_adapter)
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 NameError
103
+ raise ::LoadError
116
104
  end
117
- rescue NameError, ::LoadError
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
@@ -0,0 +1,11 @@
1
+ module MultiJson
2
+ class LoadError < StandardError
3
+ attr_reader :data
4
+ def initialize(message='', backtrace=[], data='')
5
+ super(message)
6
+ self.set_backtrace(backtrace)
7
+ @data = data
8
+ end
9
+ end
10
+ DecodeError = LoadError # Legacy support
11
+ 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 = '42'
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 valenc(x)
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 # will raise an error if c is invalid UTF-8
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
@@ -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 = 7 unless defined? MultiJson::Version::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.should_receive(:dump).with(1, :foo=>'bar', :fizz=>'buzz')
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.should_receive(:dump).with('foo', {:bar => :baz})
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.should_receive(:load).with('1', :foo => 'bar', :fizz => 'buzz')
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
@@ -6,69 +6,114 @@ shared_examples_for 'has options' do |object|
6
6
  subject{ object }
7
7
  end
8
8
 
9
- %w(dump_options load_options).each do |getter|
10
-
11
- let(:getter){ getter }
12
- let(:default_getter){ "default_#{getter}" }
13
- let(:setter){ "#{getter}=" }
14
- let(:defaults){ subject.send(default_getter) }
15
- let(:ivar){ "@#{getter}" }
16
-
17
- describe getter.tr('_', ' ') do
18
- before{ set nil }
19
- after{ set nil }
20
-
21
- def get(*args)
22
- subject.send(getter, *args)
23
- end
24
-
25
- def set(value)
26
- subject.send(setter, value)
27
- end
28
-
29
- it 'returns default options if not set' do
30
- expect(get).to eq(defaults)
31
- end
32
-
33
- it 'allows hashes' do
34
- set :foo => 'bar'
35
- expect(get).to eq(:foo => 'bar')
36
- end
37
-
38
- it 'allows objects that implement #to_hash' do
39
- value = Class.new do
40
- def to_hash
41
- {:foo=>'bar'}
42
- end
43
- end.new
44
-
45
- set value
46
- expect(get).to eq(:foo => 'bar')
47
- end
48
-
49
- it 'evaluates lambda returning options (with args)' do
50
- set lambda{ |a1, a2| { a1 => a2 }}
51
- expect(get('1', '2')).to eq('1' => '2')
52
- end
53
-
54
- it 'evaluates lambda returning options (with no args)' do
55
- set lambda{{:foo => 'bar'}}
56
- expect(get).to eq(:foo => 'bar')
57
- end
58
-
59
- it 'returns empty hash in all other cases' do
60
- set true
61
- expect(get).to eq(defaults)
62
-
63
- set false
64
- expect(get).to eq(defaults)
65
-
66
- set 10
67
- expect(get).to eq(defaults)
68
-
69
- set nil
70
- expect(get).to eq(defaults)
71
- end
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.should_receive(:to_json).with(JSON::PRETTY_STATE_PROTOTYPE.to_h)
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.should_receive(:to_json).with(:indent => "\t")
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.should_receive(:parse).with('[123]', {:quirks_mode => false, :create_additions => false})
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
@@ -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 @old_json
24
- Object.send :remove_const, :Oj if @old_oj
25
- Object.send :remove_const, :Yajl if @old_yajl
26
- Object.send :remove_const, :Gson if @old_gson
27
- Object.send :remove_const, :JrJackson if @old_jrjackson
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 @old_json
35
- Object.const_set :Oj, @old_oj if @old_oj
36
- Object.const_set :Yajl, @old_yajl if @old_yajl
37
- Object.const_set :Gson, @old_gson if @old_gson
38
- Object.const_set :JrJackson, @old_jrjackson if @old_jrjackson
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.should_receive(:warn).with(/warning/i)
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
- unless jruby?
78
- expect(MultiJson.adapter).to eq MultiJson::Adapters::Oj
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::JsonGem
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.should_receive(:default_adapter).and_return(:ok_json)
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.should_receive(:dump).once.and_return('dump_something')
114
- MultiJson::Adapters::JsonPure.should_receive(:load).once.and_return('load_something')
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.should_receive(:warn).with(/deprecated/i)
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.should_receive(:dump_options=).with(:foo => 'bar')
187
- MultiJson.should_receive(:load_options=).with(:foo => 'bar')
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.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
- -----BEGIN CERTIFICATE-----
16
- MIIDLjCCAhagAwIBAgIBADANBgkqhkiG9w0BAQUFADA9MQ8wDQYDVQQDDAZzZmVy
17
- aWsxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2NvbTAe
18
- Fw0xMzAyMDMxMDAyMjdaFw0xNDAyMDMxMDAyMjdaMD0xDzANBgNVBAMMBnNmZXJp
19
- azEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29tMIIB
20
- IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl0x5dx8uKxi7TkrIuyBUTJVB
21
- v1o93nUB9j/y4M96gV2rYwAci1JPBseNd6Fybzjo3YGuHl7EQHuSHNaf1p2lxew/
22
- y60JXIJBBgPcDK/KCP4NUHofm0jfoYD+H5uNJfHCNq7/ZsTxOtE3Ra92s0BCMTpm
23
- wBMMlWR5MtdEhIYuBO4XhnejYgH0L/7BL2lymntVnsr/agdQoojQCN1IQmsRJvrR
24
- duZRO3tZvoIo1pBc4JEehDuqCeyBgPLOqMoKtQlold1TQs1kWUBK7KWMFEhKC/Kg
25
- zyzKRHQo9yDYwOvYngoBLY+T/lwCT4dyssdhzRbfnxAhaKu4SAssIwaC01yVowID
26
- AQABozkwNzAJBgNVHRMEAjAAMB0GA1UdDgQWBBS0ruDfRak5ci1OpDNX/ZdDEkIs
27
- iTALBgNVHQ8EBAMCBLAwDQYJKoZIhvcNAQEFBQADggEBAHHSMs/MP0sOaLkEv4Jo
28
- zvkm3qn5A6t0vaHx774cmejyMU+5wySxRezspL7ULh9NeuK2OhU+Oe3TpqrAg5TK
29
- R8GQILnVu2FemGA6sAkPDlcPtgA6ieI19PZOF6HVLmc/ID/dP/NgZWWzEeqQKmcK
30
- 2+HM+SEEDhZkScYekw4ZOe164ZtZG816oAv5x0pGitSIkumUp7V8iEZ/6ehr7Y9e
31
- XOg4eeun5L/JjmjARoW2kNdvkRD3c2EeSLqWvQRsBlypHfhs6JJuLlyZPGhU3R/v
32
- Sf3lVKpBCWgRpGTvy45XVpB+59y33PJmEuQ1PTEOYvQyao9UKMAAaAN/7qWQtjl0
33
- hlw=
34
- -----END CERTIFICATE-----
35
- date: 2013-06-14 00:00:00.000000000 Z
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: 2.0.2
124
+ rubygems_version: 1.8.23
114
125
  signing_key:
115
- specification_version: 4
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
- ���iLg^��1E4x���%)H>@�
2
- ���+�U��7Պ�?*���
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ƨfELd)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
@@ -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�