multi_json 1.7.2 → 1.7.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.
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +8 -0
- data/Gemfile +2 -5
- data/lib/multi_json.rb +7 -3
- data/lib/multi_json/adapter.rb +1 -1
- data/lib/multi_json/adapters/jr_jackson.rb +7 -10
- data/lib/multi_json/adapters/json_common.rb +11 -1
- data/lib/multi_json/adapters/json_gem.rb +4 -0
- data/lib/multi_json/adapters/json_pure.rb +4 -0
- data/lib/multi_json/options.rb +1 -1
- data/lib/multi_json/version.rb +1 -1
- data/multi_json.gemspec +1 -1
- data/spec/adapter_shared_example.rb +3 -2
- data/spec/has_options.rb +1 -1
- data/spec/helper.rb +1 -1
- data/spec/multi_json_spec.rb +23 -0
- metadata +4 -4
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
1.7.3
|
2
|
+
-----
|
3
|
+
* [Require json/ext to ensure extension version gets loaded for json_gem](https://github.com/intridea/multi_json/commit/942686f7e8597418c6f90ee69e1d45242fac07b1)
|
4
|
+
* [Rename JrJackson](https://github.com/intridea/multi_json/commit/078de7ba8b6035343c3e96b4767549e9ec43369a)
|
5
|
+
* [Prefer JrJackson to JSON gem if present](https://github.com/intridea/multi_json/commit/af8bd9799a66855f04b3aff1c488485950cec7bf)
|
6
|
+
* [Print a warning if outdated gem versions are used](https://github.com/intridea/multi_json/commit/e7438e7ba2be0236cfa24c2bb9ad40ee821286d1)
|
7
|
+
* [Loosen required_rubygems_version for compatibility with Ubuntu 10.04](https://github.com/intridea/multi_json/commit/59fad014e8fe41dbc6f09485ea0dc21fc42fd7a7)
|
8
|
+
|
1
9
|
1.7.2
|
2
10
|
-----
|
3
11
|
* [Renamed Jrjackson adapter to JrJackson](https://github.com/intridea/multi_json/commit/b36dc915fc0e6548cbad06b5db6f520e040c9c8b)
|
data/Gemfile
CHANGED
@@ -3,10 +3,7 @@ source 'https://rubygems.org'
|
|
3
3
|
gem 'rake', '>= 0.9'
|
4
4
|
gem 'yard', '>= 0.8'
|
5
5
|
|
6
|
-
|
7
|
-
gem 'json', '~> 1.4', :require => nil
|
8
|
-
end
|
9
|
-
|
6
|
+
gem 'json', '~> 1.4', :require => nil
|
10
7
|
gem 'json_pure', '~> 1.4', :require => nil
|
11
8
|
|
12
9
|
platforms :ruby, :mswin, :mingw do
|
@@ -16,7 +13,7 @@ end
|
|
16
13
|
|
17
14
|
platforms :jruby do
|
18
15
|
gem 'gson', '>= 0.6', :require => nil
|
19
|
-
gem 'jrjackson', :require => nil
|
16
|
+
gem 'jrjackson', '~> 0.1.1', :require => nil
|
20
17
|
end
|
21
18
|
|
22
19
|
group :development do
|
data/lib/multi_json.rb
CHANGED
@@ -34,9 +34,9 @@ module MultiJson
|
|
34
34
|
REQUIREMENT_MAP = [
|
35
35
|
['oj', :oj],
|
36
36
|
['yajl', :yajl],
|
37
|
-
['json',
|
37
|
+
['json/ext', :json_gem],
|
38
38
|
['gson', :gson],
|
39
|
-
['
|
39
|
+
['jrjackson', :jr_jackson],
|
40
40
|
['json/pure', :json_pure]
|
41
41
|
]
|
42
42
|
|
@@ -49,6 +49,7 @@ module MultiJson
|
|
49
49
|
return :yajl if defined?(::Yajl)
|
50
50
|
return :json_gem if defined?(::JSON)
|
51
51
|
return :gson if defined?(::Gson)
|
52
|
+
return :jr_jackson if defined?(::JrJackson)
|
52
53
|
|
53
54
|
REQUIREMENT_MAP.each do |(library, adapter)|
|
54
55
|
begin
|
@@ -84,8 +85,11 @@ module MultiJson
|
|
84
85
|
# * <tt>:yajl</tt>
|
85
86
|
# * <tt>:nsjsonserialization</tt> (MacRuby only)
|
86
87
|
# * <tt>:gson</tt> (JRuby only)
|
88
|
+
# * <tt>:jr_jackson</tt> (JRuby only)
|
87
89
|
def use(new_adapter)
|
88
|
-
|
90
|
+
adapter = load_adapter(new_adapter)
|
91
|
+
adapter.activate! if adapter.respond_to?(:activate!)
|
92
|
+
@adapter = adapter
|
89
93
|
end
|
90
94
|
alias adapter= use
|
91
95
|
alias engine= use
|
data/lib/multi_json/adapter.rb
CHANGED
@@ -1,21 +1,18 @@
|
|
1
|
-
require '
|
1
|
+
require 'jrjackson' unless defined?(::JrJackson)
|
2
2
|
require 'multi_json/adapter'
|
3
|
-
require 'multi_json/convertible_hash_keys'
|
4
3
|
|
5
4
|
module MultiJson
|
6
5
|
module Adapters
|
6
|
+
# Use the jrjackson.rb library to dump/load.
|
7
7
|
class JrJackson < Adapter
|
8
|
-
|
9
|
-
ParseError = ::Java::OrgCodehausJackson::JsonParseException
|
8
|
+
ParseError = ::JrJackson::ParseError
|
10
9
|
|
11
|
-
def load(string, options={})
|
12
|
-
string
|
13
|
-
result = ::JrJackson::Json.parse(string)
|
14
|
-
options[:symbolize_keys] ? symbolize_keys(result) : result
|
10
|
+
def load(string, options={}) #:nodoc:
|
11
|
+
::JrJackson::Json.load(string, options)
|
15
12
|
end
|
16
13
|
|
17
|
-
def dump(object, options={})
|
18
|
-
::JrJackson::Json.
|
14
|
+
def dump(object, options={}) #:nodoc:
|
15
|
+
::JrJackson::Json.dump(object)
|
19
16
|
end
|
20
17
|
end
|
21
18
|
end
|
@@ -5,6 +5,16 @@ module MultiJson
|
|
5
5
|
class JsonCommon < Adapter
|
6
6
|
defaults :load, :create_additions => false, :quirks_mode => true
|
7
7
|
|
8
|
+
GEM_VERSION = '1.7.7'
|
9
|
+
|
10
|
+
def self.activate!
|
11
|
+
if JSON::VERSION < GEM_VERSION
|
12
|
+
Kernel.warn "You are using an old or stdlib version of #{gem_name} gem\n" +
|
13
|
+
"Please upgrade to the recent version by adding this to your Gemfile:\n\n" +
|
14
|
+
" gem '#{gem_name}', '~> #{GEM_VERSION}'\n"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
8
18
|
def load(string, options={})
|
9
19
|
string = string.read if string.respond_to?(:read)
|
10
20
|
|
@@ -22,4 +32,4 @@ module MultiJson
|
|
22
32
|
end
|
23
33
|
end
|
24
34
|
end
|
25
|
-
end
|
35
|
+
end
|
data/lib/multi_json/options.rb
CHANGED
data/lib/multi_json/version.rb
CHANGED
data/multi_json.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.licenses = ['MIT']
|
15
15
|
spec.name = 'multi_json'
|
16
16
|
spec.require_paths = ['lib']
|
17
|
-
spec.required_rubygems_version = '>= 1.3.
|
17
|
+
spec.required_rubygems_version = '>= 1.3.5'
|
18
18
|
spec.signing_key = File.expand_path("~/.gem/private_key.pem") if $0 =~ /gem\z/
|
19
19
|
spec.summary = %q{A gem to provide swappable JSON backends.}
|
20
20
|
spec.test_files = Dir['spec/**/*']
|
@@ -13,7 +13,7 @@ shared_examples_for 'an adapter' do |adapter|
|
|
13
13
|
it_behaves_like 'has options', lambda{ MultiJson.adapter }
|
14
14
|
|
15
15
|
it 'does not modify argument hashes' do
|
16
|
-
options = { :symbolize_keys => true, :pretty => false, :adapter => :
|
16
|
+
options = { :symbolize_keys => true, :pretty => false, :adapter => :json_pure }
|
17
17
|
expect{MultiJson.load('{}', options)}.to_not change{options}
|
18
18
|
expect{MultiJson.dump([42], options)}.to_not change{options}
|
19
19
|
end
|
@@ -196,7 +196,8 @@ shared_examples_for 'an adapter' do |adapter|
|
|
196
196
|
|
197
197
|
it 'stringifys symbol keys when encoding' do
|
198
198
|
dumped_json = MultiJson.dump(:a => 1, :b => {:c => 2})
|
199
|
-
|
199
|
+
loaded_json = MultiJson.load(dumped_json)
|
200
|
+
expect(loaded_json).to eq({'a' => 1, 'b' => {'c' => 2}})
|
200
201
|
end
|
201
202
|
|
202
203
|
it 'properly loads valid JSON in StringIOs' do
|
data/spec/has_options.rb
CHANGED
data/spec/helper.rb
CHANGED
data/spec/multi_json_spec.rb
CHANGED
@@ -15,6 +15,8 @@ describe 'MultiJson' do
|
|
15
15
|
@old_oj = Object.const_get :Oj if Object.const_defined?(:Oj)
|
16
16
|
@old_yajl = Object.const_get :Yajl if Object.const_defined?(:Yajl)
|
17
17
|
@old_gson = Object.const_get :Gson if Object.const_defined?(:Gson)
|
18
|
+
@old_jrjackson = Object.const_get :JrJackson if Object.const_defined?(:JrJackson)
|
19
|
+
|
18
20
|
MultiJson::REQUIREMENT_MAP.each_with_index do |(library, adapter), index|
|
19
21
|
MultiJson::REQUIREMENT_MAP[index] = ["foo/#{library}", adapter]
|
20
22
|
end
|
@@ -22,6 +24,7 @@ describe 'MultiJson' do
|
|
22
24
|
Object.send :remove_const, :Oj if @old_oj
|
23
25
|
Object.send :remove_const, :Yajl if @old_yajl
|
24
26
|
Object.send :remove_const, :Gson if @old_gson
|
27
|
+
Object.send :remove_const, :JrJackson if @old_jrjackson
|
25
28
|
end
|
26
29
|
|
27
30
|
after do
|
@@ -32,6 +35,7 @@ describe 'MultiJson' do
|
|
32
35
|
Object.const_set :Oj, @old_oj if @old_oj
|
33
36
|
Object.const_set :Yajl, @old_yajl if @old_yajl
|
34
37
|
Object.const_set :Gson, @old_gson if @old_gson
|
38
|
+
Object.const_set :JrJackson, @old_jrjackson if @old_jrjackson
|
35
39
|
end
|
36
40
|
|
37
41
|
it 'defaults to ok_json if no other json implementions are available' do
|
@@ -46,6 +50,25 @@ describe 'MultiJson' do
|
|
46
50
|
end
|
47
51
|
end
|
48
52
|
|
53
|
+
context 'with stdlib version' do
|
54
|
+
around do |example|
|
55
|
+
version = JSON::VERSION
|
56
|
+
silence_warnings{ JSON::VERSION = '1.5.5' }
|
57
|
+
example.call
|
58
|
+
silence_warnings{ JSON::VERSION = version }
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'should warn about json' do
|
62
|
+
Kernel.should_receive(:warn).with(/'json', '~> 1.7.7'/)
|
63
|
+
MultiJson.use :json_gem
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should warb about json/pure' do
|
67
|
+
Kernel.should_receive(:warn).with(/'json_pure', '~> 1.7.7'/)
|
68
|
+
MultiJson.use :json_pure
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
49
72
|
it 'defaults to the best available gem' do
|
50
73
|
# Clear cache variable already set by previous tests
|
51
74
|
MultiJson.send(:remove_instance_variable, :@adapter)
|
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.7.
|
4
|
+
version: 1.7.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -39,7 +39,7 @@ cert_chain:
|
|
39
39
|
U0xxV3ZRUnNCbHlwSGZoczZKSnVMbHlaUEdoVTNSL3YKU2YzbFZLcEJDV2dS
|
40
40
|
cEdUdnk0NVhWcEIrNTl5MzNQSm1FdVExUFRFT1l2UXlhbzlVS01BQWFBTi83
|
41
41
|
cVdRdGpsMApobHc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
42
|
-
date: 2013-
|
42
|
+
date: 2013-05-05 00:00:00.000000000 Z
|
43
43
|
dependencies:
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: bundler
|
@@ -116,10 +116,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
116
116
|
requirements:
|
117
117
|
- - ! '>='
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version: 1.3.
|
119
|
+
version: 1.3.5
|
120
120
|
requirements: []
|
121
121
|
rubyforge_project:
|
122
|
-
rubygems_version: 1.8.
|
122
|
+
rubygems_version: 1.8.23
|
123
123
|
signing_key:
|
124
124
|
specification_version: 3
|
125
125
|
summary: A gem to provide swappable JSON backends.
|
metadata.gz.sig
CHANGED
Binary file
|