multi_json 1.8.2 → 1.8.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 405bc62d55c229a4f869fb467808e194a090c0bd
4
- data.tar.gz: 5b3f079d77935c2636d284e48b46452eeb0322c0
3
+ metadata.gz: 7df801671d8999a51f6f424a4021fb0ba92b02f5
4
+ data.tar.gz: 868ed7197a1c723fa44ad4dba0933abdb21224d2
5
5
  SHA512:
6
- metadata.gz: d4826c05405be5c145d35f04d26192dc83992ad6e45063dcd36423d8bf023ec8a58559c16dc0246156394272f75bed3a4227c696eee0792efae26478bab3f084
7
- data.tar.gz: e9931cadf5f9195265b2e0bb91f1c5d10c76fd7ac8dd3aee4513503219e10f2a5fc1a3b1f1968ebdf7313da4387292ab11904365d4fd8edc36b113cd157cbcc0
6
+ metadata.gz: a256f92792b885140a950127425c9ead3c60d41fcea230ad81a9dfa053f0c7e01b55798b4b5db984ffb083a9116236c1c8dd3a0ecf5d951cca7f9f7ddc4f0c6d
7
+ data.tar.gz: 47be9e4bc4f779987890b995db6f5bfa5e98801e8f2e8c5c1def2fc3fdaa590bc91a42f74cb1fd4c750f4f6b44e7fa2963a43486b91cd1494be5939336bfc10d
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/.travis.yml CHANGED
@@ -1,16 +1,24 @@
1
+ before_install:
2
+ - gem update bundler
3
+ - bundle --version
4
+ - gem update --system 2.1.11
5
+ - gem --version
1
6
  bundler_args: --without development
2
7
  language: ruby
3
8
  rvm:
4
- - rbx-18mode
5
- - rbx-19mode
6
- - jruby-18mode
7
- - jruby-19mode
8
9
  - 1.8.7
9
10
  - 1.9.2
10
11
  - 1.9.3
11
12
  - 2.0.0
12
-
13
+ - 2.1.0
14
+ - jruby-18mode
15
+ - jruby-19mode
16
+ - jruby-head
17
+ - rbx
18
+ - ruby-head
13
19
  matrix:
14
20
  allow_failures:
15
- - rvm: jruby-18mode
16
- - rvm: jruby-19mode
21
+ - rvm: jruby-head
22
+ - rvm: rbx
23
+ - rvm: ruby-head
24
+ fast_finish: true
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ 1.8.3
2
+ -----
3
+ * [Make JrJackson explicitly read StringIO objects](https://github.com/intridea/multi_json/commit/e1f162d5b668e5e4db5afa175361a601a8aa2b05)
4
+ * [Prevent calling #downcase on alias symbols](https://github.com/intridea/multi_json/commit/c1cf075453ce0110f7decc4f906444b1233bb67c)
5
+
1
6
  1.8.2
2
7
  -----
3
8
  * [Downcase adapter string name for OS compatibility](https://github.com/intridea/multi_json/commit/b8e15a032247a63f1410d21a18add05035f3fa66)
data/Gemfile CHANGED
@@ -6,16 +6,6 @@ gem 'yard', '>= 0.8'
6
6
  gem 'json', '~> 1.4', :require => nil
7
7
  gem 'json_pure', '~> 1.4', :require => nil
8
8
 
9
- platforms :ruby, :mswin, :mingw do
10
- gem 'oj', '~> 2.0', :require => nil
11
- gem 'yajl-ruby', '~> 1.0', :require => nil
12
- end
13
-
14
- platforms :jruby do
15
- gem 'gson', '>= 0.6', :require => nil
16
- gem 'jrjackson', '~> 0.2.1', :require => nil
17
- end
18
-
19
9
  group :development do
20
10
  gem 'kramdown', '>= 0.14'
21
11
  gem 'pry'
@@ -27,4 +17,18 @@ group :test do
27
17
  gem 'simplecov', :require => false
28
18
  end
29
19
 
20
+ platforms :jruby do
21
+ gem 'gson', '>= 0.6', :require => nil
22
+ gem 'jrjackson', '~> 0.2.2', :require => nil
23
+ end
24
+
25
+ platforms :mingw, :mswin, :ruby do
26
+ gem 'oj', '~> 2.0', :require => nil
27
+ gem 'yajl-ruby', '~> 1.0', :require => nil
28
+ end
29
+
30
+ platforms :rbx do
31
+ gem 'rubysl', '~> 2.0'
32
+ end
33
+
30
34
  gemspec
data/README.md CHANGED
@@ -4,13 +4,11 @@
4
4
  [![Build Status](https://secure.travis-ci.org/intridea/multi_json.png?branch=master)][travis]
5
5
  [![Dependency Status](https://gemnasium.com/intridea/multi_json.png?travis)][gemnasium]
6
6
  [![Code Climate](https://codeclimate.com/github/intridea/multi_json.png)][codeclimate]
7
- [![Coverage Status](https://coveralls.io/repos/intridea/multi_json/badge.png?branch=master)][coveralls]
8
7
 
9
8
  [gem]: https://rubygems.org/gems/multi_json
10
9
  [travis]: http://travis-ci.org/intridea/multi_json
11
10
  [gemnasium]: https://gemnasium.com/intridea/multi_json
12
11
  [codeclimate]: https://codeclimate.com/github/intridea/multi_json
13
-
14
12
  Lots of Ruby libraries parse JSON and everyone has their favorite JSON coder.
15
13
  Instead of choosing a single JSON coder and forcing users of your library to be
16
14
  stuck with it, you can use MultiJSON instead, which will simply choose the
@@ -62,6 +60,7 @@ implementations:
62
60
  * Ruby 1.9.2
63
61
  * Ruby 1.9.3
64
62
  * Ruby 2.0.0
63
+ * Ruby 2.1.0
65
64
  * [JRuby][]
66
65
  * [Rubinius][]
67
66
  * [MacRuby][] (not tested on Travis CI)
data/lib/multi_json.rb CHANGED
@@ -28,7 +28,7 @@ module MultiJson
28
28
  self.load_options = self.dump_options = value
29
29
  end
30
30
 
31
- ALIASES = { 'jrjackson' => :jr_jackson }
31
+ ALIASES = { 'jrjackson' => 'jr_jackson' }
32
32
 
33
33
  REQUIREMENT_MAP = [
34
34
  ['oj', :oj],
@@ -8,6 +8,8 @@ module MultiJson
8
8
  ParseError = ::JrJackson::ParseError
9
9
 
10
10
  def load(string, options={}) #:nodoc:
11
+ # https://github.com/guyboertje/jrjackson/issues/20
12
+ string = string.read if StringIO === string
11
13
  ::JrJackson::Json.load(string, options)
12
14
  end
13
15
 
@@ -2,40 +2,40 @@ module MultiJson
2
2
  module ConvertibleHashKeys
3
3
  private
4
4
 
5
- def symbolize_keys(object)
6
- prepare_object(object) do |key|
5
+ def symbolize_keys(hash)
6
+ prepare_hash(hash) do |key|
7
7
  key.respond_to?(:to_sym) ? key.to_sym : key
8
8
  end
9
9
  end
10
10
 
11
- def stringify_keys(object)
12
- prepare_object(object) do |key|
11
+ def stringify_keys(hash)
12
+ prepare_hash(hash) do |key|
13
13
  key.respond_to?(:to_s) ? key.to_s : key
14
14
  end
15
15
  end
16
16
 
17
- def prepare_object(object, &key_modifier)
18
- return object unless block_given?
19
- case object
17
+ def prepare_hash(hash, &key_modifier)
18
+ return hash unless block_given?
19
+ case hash
20
20
  when Array
21
- object.map do |value|
22
- prepare_object(value, &key_modifier)
21
+ hash.map do |value|
22
+ prepare_hash(value, &key_modifier)
23
23
  end
24
24
  when Hash
25
- object.inject({}) do |result, (key, value)|
25
+ hash.inject({}) do |result, (key, value)|
26
26
  new_key = key_modifier.call(key)
27
- new_value = prepare_object(value, &key_modifier)
27
+ new_value = prepare_hash(value, &key_modifier)
28
28
  result.merge! new_key => new_value
29
29
  end
30
30
  when String, Numeric, true, false, nil
31
- object
31
+ hash
32
32
  else
33
- if object.respond_to?(:to_json)
34
- object
35
- elsif object.respond_to?(:to_s)
36
- object.to_s
33
+ if hash.respond_to?(:to_json)
34
+ hash
35
+ elsif hash.respond_to?(:to_s)
36
+ hash.to_s
37
37
  else
38
- object
38
+ hash
39
39
  end
40
40
  end
41
41
  end
@@ -2,7 +2,7 @@ module MultiJson
2
2
  class Version
3
3
  MAJOR = 1 unless defined? MultiJson::Version::MAJOR
4
4
  MINOR = 8 unless defined? MultiJson::Version::MINOR
5
- PATCH = 2 unless defined? MultiJson::Version::PATCH
5
+ PATCH = 3 unless defined? MultiJson::Version::PATCH
6
6
  PRE = nil unless defined? MultiJson::Version::PRE
7
7
 
8
8
  class << self
@@ -43,7 +43,7 @@ shared_examples_for 'an adapter' do |adapter|
43
43
  {'abc' => 'def'},
44
44
  [1, 2, 3, '4', true, false, nil]
45
45
  ].each do |example|
46
- expect(MultiJson.load(MultiJson.dump(example))).to eq example
46
+ expect(MultiJson.load(MultiJson.dump(example))).to eq(example)
47
47
  end
48
48
  end
49
49
 
@@ -57,7 +57,7 @@ shared_examples_for 'an adapter' do |adapter|
57
57
  else
58
58
  'Tue Dec 11 09:39:05 UTC 2012'
59
59
  end
60
- expect(MultiJson.load(dumped_json)).to eq expected
60
+ expect(MultiJson.load(dumped_json)).to eq(expected)
61
61
  end
62
62
  end
63
63
 
@@ -81,13 +81,13 @@ shared_examples_for 'an adapter' do |adapter|
81
81
  ]
82
82
  ].each do |example, expected|
83
83
  dumped_json = MultiJson.dump(example)
84
- expect(MultiJson.load(dumped_json)).to eq expected
84
+ expect(MultiJson.load(dumped_json)).to eq(expected)
85
85
  end
86
86
  end
87
87
 
88
88
  it 'dumps rootless JSON' do
89
- expect(MultiJson.dump('random rootless string')).to eq '"random rootless string"'
90
- expect(MultiJson.dump(123)).to eq '123'
89
+ expect(MultiJson.dump('random rootless string')).to eq('"random rootless string"')
90
+ expect(MultiJson.dump(123)).to eq('123')
91
91
  end
92
92
 
93
93
  it 'passes options to the adapter' do
@@ -95,21 +95,18 @@ shared_examples_for 'an adapter' do |adapter|
95
95
  MultiJson.dump('foo', :bar => :baz)
96
96
  end
97
97
 
98
- # This behavior is currently not supported by gson.rb
99
- # See discussion at https://github.com/intridea/multi_json/pull/71
100
- unless adapter.name == 'MultiJson::Adapters::Gson'
101
- it 'dumps custom objects that implement to_json' do
102
- klass = Class.new do
103
- def to_json(*)
104
- '"foobar"'
105
- end
98
+ it 'dumps custom objects that implement to_json' do
99
+ pending 'not supported' if adapter.name == 'MultiJson::Adapters::Gson'
100
+ klass = Class.new do
101
+ def to_json(*)
102
+ '"foobar"'
106
103
  end
107
- expect(MultiJson.dump(klass.new)).to eq '"foobar"'
108
104
  end
105
+ expect(MultiJson.dump(klass.new)).to eq('"foobar"')
109
106
  end
110
107
 
111
108
  it 'allows to dump JSON values' do
112
- expect(MultiJson.dump(42)).to eq '42'
109
+ expect(MultiJson.dump(42)).to eq('42')
113
110
  end
114
111
 
115
112
  it 'allows to dump JSON with UTF-8 characters' do
@@ -167,6 +164,11 @@ shared_examples_for 'an adapter' do |adapter|
167
164
 
168
165
  it 'raises MultiJson::LoadError on blank input or invalid input' do
169
166
  [nil, '{"abc"}', ' ', "\t\t\t", "\n", "\x82\xAC\xEF"].each do |input|
167
+ if input == "\x82\xAC\xEF"
168
+ pending 'GSON bug: https://github.com/avsej/gson.rb/issues/3' if adapter.name =~ /Gson/
169
+ pending 'JrJackson bug: https://github.com/guyboertje/jrjackson/issues/21' if adapter.name =~ /JrJackson/
170
+ end
171
+
170
172
  expect{MultiJson.load(input)}.to raise_error(MultiJson::LoadError)
171
173
  end
172
174
  end
@@ -176,7 +178,7 @@ shared_examples_for 'an adapter' do |adapter|
176
178
  begin
177
179
  MultiJson.load(data)
178
180
  rescue MultiJson::LoadError => le
179
- expect(le.data).to eq data
181
+ expect(le.data).to eq(data)
180
182
  end
181
183
  end
182
184
 
@@ -185,7 +187,7 @@ shared_examples_for 'an adapter' do |adapter|
185
187
  begin
186
188
  MultiJson.load(data)
187
189
  rescue MultiJson::DecodeError => de
188
- expect(de.data).to eq data
190
+ expect(de.data).to eq(data)
189
191
  end
190
192
  end
191
193
 
@@ -213,14 +215,14 @@ shared_examples_for 'an adapter' do |adapter|
213
215
  [
214
216
  '{"abc":[{"def":"hgi"}]}',
215
217
  {:abc => [{:def => 'hgi'}]},
216
- ],
218
+ ]
217
219
  ].each do |example, expected|
218
- expect(MultiJson.load(example, :symbolize_keys => true)).to eq expected
220
+ expect(MultiJson.load(example, :symbolize_keys => true)).to eq(expected)
219
221
  end
220
222
  end
221
223
 
222
224
  it 'allows to load JSON values' do
223
- expect(MultiJson.load('42')).to eq 42
225
+ expect(MultiJson.load('42')).to eq(42)
224
226
  end
225
227
 
226
228
  it 'allows to load JSON with UTF-8 characters' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multi_json
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.2
4
+ version: 1.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh
@@ -33,7 +33,7 @@ cert_chain:
33
33
  7BTxdlSpJZDcAK29Ni3NRCRu6Air4wfDln0Ilzeuut6cJ4/j2/RlvsccVSRaEfOa
34
34
  wM7GTK5SEdU3qelyBdc4+RRs6uU=
35
35
  -----END CERTIFICATE-----
36
- date: 2013-10-15 00:00:00.000000000 Z
36
+ date: 2014-01-09 00:00:00.000000000 Z
37
37
  dependencies:
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: bundler
@@ -60,30 +60,17 @@ executables: []
60
60
  extensions: []
61
61
  extra_rdoc_files: []
62
62
  files:
63
+ - .document
64
+ - .rspec
65
+ - .travis.yml
63
66
  - .yardopts
64
67
  - CHANGELOG.md
65
68
  - CONTRIBUTING.md
69
+ - Gemfile
66
70
  - LICENSE.md
67
71
  - README.md
68
72
  - Rakefile
69
- - multi_json.gemspec
70
- - Gemfile
71
- - .document
72
- - .rspec
73
- - .travis.yml
74
- - spec/gson_adapter_spec.rb
75
- - spec/jr_jackson_adapter_spec.rb
76
- - spec/json_gem_adapter_spec.rb
77
- - spec/json_pure_adapter_spec.rb
78
- - spec/multi_json_spec.rb
79
- - spec/nsjsonserialization_adapter_spec.rb
80
- - spec/oj_adapter_spec.rb
81
- - spec/ok_json_adapter_spec.rb
82
- - spec/shared/adapter.rb
83
- - spec/shared/json_common_adapter.rb
84
- - spec/shared/options.rb
85
- - spec/spec_helper.rb
86
- - spec/yajl_adapter_spec.rb
73
+ - lib/multi_json.rb
87
74
  - lib/multi_json/adapter.rb
88
75
  - lib/multi_json/adapters/gson.rb
89
76
  - lib/multi_json/adapters/jr_jackson.rb
@@ -99,7 +86,20 @@ files:
99
86
  - lib/multi_json/options.rb
100
87
  - lib/multi_json/vendor/okjson.rb
101
88
  - lib/multi_json/version.rb
102
- - lib/multi_json.rb
89
+ - multi_json.gemspec
90
+ - spec/gson_adapter_spec.rb
91
+ - spec/jr_jackson_adapter_spec.rb
92
+ - spec/json_gem_adapter_spec.rb
93
+ - spec/json_pure_adapter_spec.rb
94
+ - spec/multi_json_spec.rb
95
+ - spec/nsjsonserialization_adapter_spec.rb
96
+ - spec/oj_adapter_spec.rb
97
+ - spec/ok_json_adapter_spec.rb
98
+ - spec/shared/adapter.rb
99
+ - spec/shared/json_common_adapter.rb
100
+ - spec/shared/options.rb
101
+ - spec/spec_helper.rb
102
+ - spec/yajl_adapter_spec.rb
103
103
  homepage: http://github.com/intridea/multi_json
104
104
  licenses:
105
105
  - MIT
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: 1.3.5
121
121
  requirements: []
122
122
  rubyforge_project:
123
- rubygems_version: 2.1.5
123
+ rubygems_version: 2.2.0
124
124
  signing_key:
125
125
  specification_version: 4
126
126
  summary: A common interface to multiple JSON libraries.
metadata.gz.sig CHANGED
Binary file