multi_json 1.8.2 → 1.8.3

Sign up to get free protection for your applications and to get access to all the features.
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