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 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�