multi_json 1.4.0 → 1.5.0
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/README.md +16 -0
- data/lib/multi_json.rb +8 -0
- data/lib/multi_json/adapters/ok_json.rb +1 -1
- data/lib/multi_json/version.rb +1 -1
- data/multi_json.gemspec +4 -4
- data/spec/adapter_shared_example.rb +5 -1
- data/spec/multi_json_spec.rb +12 -1
- metadata +79 -92
data/README.md
CHANGED
@@ -65,6 +65,22 @@ implementation, you will be personally responsible for providing patches in a
|
|
65
65
|
timely fashion. If critical issues for a particular implementation exist at the
|
66
66
|
time of a major release, support for that Ruby version may be dropped.
|
67
67
|
|
68
|
+
## Versioning
|
69
|
+
|
70
|
+
This library aims to adhere to [Semantic Versioning 2.0.0][semver]. Violations
|
71
|
+
of this scheme should be reported as bugs. Specifically, if a minor or patch
|
72
|
+
version is released that breaks backward compatibility, that version should be
|
73
|
+
immediately yanked and/or a new version should be immediately released that
|
74
|
+
restores compatibility. Breaking changes to the public API will only be
|
75
|
+
introduced with new major versions. As a result of this policy, you can (and
|
76
|
+
should) specify a dependency on this gem using the [Pessimistic Version
|
77
|
+
Constraint][pvc] with two digits of precision. For example:
|
78
|
+
|
79
|
+
spec.add_dependency 'multi_json', '~> 1.0'
|
80
|
+
|
81
|
+
[semver]: http://semver.org/
|
82
|
+
[pvc]: http://docs.rubygems.org/read/chapter/16#page74
|
83
|
+
|
68
84
|
## Copyright
|
69
85
|
Copyright (c) 2010 Michael Bleigh, Josh Kalderimis, Erik Michaels-Ober, and Intridea, Inc.
|
70
86
|
See [LICENSE][] for details.
|
data/lib/multi_json.rb
CHANGED
@@ -117,6 +117,14 @@ module MultiJson
|
|
117
117
|
# :nodoc:
|
118
118
|
alias :encode :dump
|
119
119
|
|
120
|
+
def with_adapter(new_adapter)
|
121
|
+
old_adapter, self.adapter = adapter, new_adapter
|
122
|
+
yield
|
123
|
+
ensure
|
124
|
+
self.adapter = old_adapter
|
125
|
+
end
|
126
|
+
alias :with_engine :with_adapter
|
127
|
+
|
120
128
|
end
|
121
129
|
|
122
130
|
end
|
data/lib/multi_json/version.rb
CHANGED
data/multi_json.gemspec
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
require File.expand_path("../lib/multi_json/version", __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
|
-
gem.add_development_dependency 'rake', '
|
6
|
-
gem.add_development_dependency 'rdoc', '
|
7
|
-
gem.add_development_dependency 'rspec', '
|
8
|
-
gem.add_development_dependency 'simplecov', '
|
5
|
+
gem.add_development_dependency 'rake', '>= 0.9'
|
6
|
+
gem.add_development_dependency 'rdoc', '>= 3.9'
|
7
|
+
gem.add_development_dependency 'rspec', '>= 2.6'
|
8
|
+
gem.add_development_dependency 'simplecov', '>= 0.4'
|
9
9
|
gem.authors = ["Michael Bleigh", "Josh Kalderimis", "Erik Michaels-Ober"]
|
10
10
|
gem.description = %q{A gem to provide easy switching between different JSON backends, including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem, and OkJson.}
|
11
11
|
gem.email = ['michael@intridea.com', 'josh.kalderimis@gmail.com', 'sferik@gmail.com']
|
@@ -18,7 +18,7 @@ shared_examples_for "an adapter" do |adapter|
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
it 'dumps symbol keys as strings' do
|
21
|
+
it 'dumps symbol and fixnum keys as strings' do
|
22
22
|
[
|
23
23
|
[
|
24
24
|
{:foo => {:bar => 'baz'}},
|
@@ -31,6 +31,10 @@ shared_examples_for "an adapter" do |adapter|
|
|
31
31
|
[
|
32
32
|
{:foo => [{:bar => 'baz'}]},
|
33
33
|
{'foo' => [{'bar' => 'baz'}]},
|
34
|
+
],
|
35
|
+
[
|
36
|
+
{1 => {2 => {3 => 'bar'}}},
|
37
|
+
{'1' => {'2' => {'3' => 'bar'}}}
|
34
38
|
]
|
35
39
|
].each do |example, expected|
|
36
40
|
dumped_json = MultiJson.dump(example)
|
data/spec/multi_json_spec.rb
CHANGED
@@ -73,11 +73,22 @@ describe 'MultiJson' do
|
|
73
73
|
MultiJson.use :json_gem
|
74
74
|
expect(MultiJson.dump('', :adapter => :json_pure)).to eq 'dump_something'
|
75
75
|
expect(MultiJson.load('', :adapter => :json_pure)).to eq 'load_something'
|
76
|
-
expect(MultiJson.adapter.
|
76
|
+
expect(MultiJson.adapter.name).to eq "MultiJson::Adapters::JsonGem"
|
77
77
|
end
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
|
+
it 'can set adapter for a block' do
|
82
|
+
MultiJson.use :ok_json
|
83
|
+
MultiJson.with_adapter(:json_pure) do
|
84
|
+
expect(MultiJson.adapter.name).to eq 'MultiJson::Adapters::JsonPure'
|
85
|
+
end
|
86
|
+
MultiJson.with_engine(:yajl) do
|
87
|
+
expect(MultiJson.adapter.name).to eq 'MultiJson::Adapters::Yajl'
|
88
|
+
end
|
89
|
+
expect(MultiJson.adapter.name).to eq 'MultiJson::Adapters::OkJson'
|
90
|
+
end
|
91
|
+
|
81
92
|
%w(json_gem json_pure nsjsonserialization oj ok_json yajl).each do |adapter|
|
82
93
|
next if !macruby? && adapter == 'nsjsonserialization'
|
83
94
|
next if jruby? && (adapter == 'oj' || adapter == 'yajl')
|
metadata
CHANGED
@@ -1,98 +1,94 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: multi_json
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
hash: 7
|
3
|
+
version: !ruby/object:Gem::Version
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 1
|
8
|
-
- 4
|
9
|
-
- 0
|
10
|
-
version: 1.4.0
|
5
|
+
version: 1.5.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Michael Bleigh
|
14
9
|
- Josh Kalderimis
|
15
10
|
- Erik Michaels-Ober
|
16
11
|
autorequire:
|
17
12
|
bindir: bin
|
18
13
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
14
|
+
date: 2012-12-10 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
version_requirements: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0.9'
|
22
|
+
none: false
|
24
23
|
name: rake
|
24
|
+
type: :development
|
25
25
|
prerelease: false
|
26
|
-
requirement:
|
26
|
+
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0.9'
|
31
|
+
none: false
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
version_requirements: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '3.9'
|
27
38
|
none: false
|
28
|
-
requirements:
|
29
|
-
- - ~>
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
hash: 25
|
32
|
-
segments:
|
33
|
-
- 0
|
34
|
-
- 9
|
35
|
-
version: "0.9"
|
36
|
-
type: :development
|
37
|
-
version_requirements: *id001
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
39
|
name: rdoc
|
40
|
+
type: :development
|
40
41
|
prerelease: false
|
41
|
-
requirement:
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '3.9'
|
47
|
+
none: false
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '2.6'
|
42
54
|
none: false
|
43
|
-
requirements:
|
44
|
-
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
hash: 21
|
47
|
-
segments:
|
48
|
-
- 3
|
49
|
-
- 9
|
50
|
-
version: "3.9"
|
51
|
-
type: :development
|
52
|
-
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
55
|
name: rspec
|
56
|
+
type: :development
|
55
57
|
prerelease: false
|
56
|
-
requirement:
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '2.6'
|
63
|
+
none: false
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.4'
|
57
70
|
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
hash: 15
|
62
|
-
segments:
|
63
|
-
- 2
|
64
|
-
- 6
|
65
|
-
version: "2.6"
|
66
|
-
type: :development
|
67
|
-
version_requirements: *id003
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
71
|
name: simplecov
|
72
|
+
type: :development
|
70
73
|
prerelease: false
|
71
|
-
requirement:
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0.4'
|
72
79
|
none: false
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
hash: 3
|
77
|
-
segments:
|
78
|
-
- 0
|
79
|
-
- 4
|
80
|
-
version: "0.4"
|
81
|
-
type: :development
|
82
|
-
version_requirements: *id004
|
83
|
-
description: A gem to provide easy switching between different JSON backends, including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem, and OkJson.
|
84
|
-
email:
|
80
|
+
description: A gem to provide easy switching between different JSON backends, including
|
81
|
+
Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem, and OkJson.
|
82
|
+
email:
|
85
83
|
- michael@intridea.com
|
86
84
|
- josh.kalderimis@gmail.com
|
87
85
|
- sferik@gmail.com
|
88
86
|
executables: []
|
89
|
-
|
90
87
|
extensions: []
|
91
|
-
|
92
|
-
extra_rdoc_files:
|
88
|
+
extra_rdoc_files:
|
93
89
|
- LICENSE.md
|
94
90
|
- README.md
|
95
|
-
files:
|
91
|
+
files:
|
96
92
|
- LICENSE.md
|
97
93
|
- README.md
|
98
94
|
- Rakefile
|
@@ -114,43 +110,34 @@ files:
|
|
114
110
|
- lib/multi_json/vendor/okjson.rb
|
115
111
|
- lib/multi_json/version.rb
|
116
112
|
- lib/multi_json.rb
|
117
|
-
has_rdoc: true
|
118
113
|
homepage: http://github.com/intridea/multi_json
|
119
|
-
licenses:
|
114
|
+
licenses:
|
120
115
|
- MIT
|
121
116
|
post_install_message:
|
122
|
-
rdoc_options:
|
117
|
+
rdoc_options:
|
123
118
|
- --charset=UTF-8
|
124
|
-
require_paths:
|
119
|
+
require_paths:
|
125
120
|
- lib
|
126
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
hash: 3
|
132
|
-
segments:
|
133
|
-
- 0
|
134
|
-
version: "0"
|
135
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
136
126
|
none: false
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
segments:
|
142
|
-
- 1
|
143
|
-
- 3
|
144
|
-
- 6
|
127
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
145
131
|
version: 1.3.6
|
132
|
+
none: false
|
146
133
|
requirements: []
|
147
|
-
|
148
134
|
rubyforge_project:
|
149
|
-
rubygems_version: 1.
|
135
|
+
rubygems_version: 1.8.23
|
150
136
|
signing_key:
|
151
137
|
specification_version: 3
|
152
138
|
summary: A gem to provide swappable JSON backends.
|
153
|
-
test_files:
|
139
|
+
test_files:
|
154
140
|
- spec/adapter_shared_example.rb
|
155
141
|
- spec/helper.rb
|
156
142
|
- spec/multi_json_spec.rb
|
143
|
+
has_rdoc:
|