multi_json 1.3.1 → 1.3.2
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/lib/multi_json.rb +25 -4
- data/lib/multi_json/version.rb +1 -1
- data/multi_json.gemspec +5 -2
- data/spec/multi_json_spec.rb +15 -0
- metadata +6 -4
data/lib/multi_json.rb
CHANGED
@@ -19,6 +19,12 @@ module MultiJson
|
|
19
19
|
["json/pure", :json_pure]
|
20
20
|
]
|
21
21
|
|
22
|
+
# TODO: Remove for 2.0 release (but no sooner)
|
23
|
+
def default_engine
|
24
|
+
deprecate("MultiJson.default_engine is deprecated and will be removed in the next major version. Use MultiJson.default_adapter instead.")
|
25
|
+
self.default_adapter
|
26
|
+
end
|
27
|
+
|
22
28
|
# The default adapter based on what you currently
|
23
29
|
# have loaded and installed. First checks to see
|
24
30
|
# if any adapters are already loaded, then checks
|
@@ -70,19 +76,23 @@ module MultiJson
|
|
70
76
|
# * <tt>:yajl</tt>
|
71
77
|
# * <tt>:nsjsonserialization</tt> (MacRuby only)
|
72
78
|
def use(new_adapter)
|
79
|
+
@adapter = load_adapter(new_adapter)
|
80
|
+
end
|
81
|
+
alias :adapter= :use
|
82
|
+
|
83
|
+
def load_adapter(new_adapter)
|
73
84
|
case new_adapter
|
74
85
|
when String, Symbol
|
75
86
|
require "multi_json/adapters/#{new_adapter}"
|
76
|
-
|
87
|
+
MultiJson::Adapters.const_get("#{new_adapter.to_s.split('_').map{|s| s.capitalize}.join('')}")
|
77
88
|
when NilClass
|
78
|
-
|
89
|
+
nil
|
79
90
|
when Class
|
80
|
-
|
91
|
+
new_adapter
|
81
92
|
else
|
82
93
|
raise "Did not recognize your adapter specification. Please specify either a symbol or a class."
|
83
94
|
end
|
84
95
|
end
|
85
|
-
alias :adapter= :use
|
86
96
|
|
87
97
|
# TODO: Remove for 2.0 release (but no sooner)
|
88
98
|
def decode(string, options={})
|
@@ -95,12 +105,22 @@ module MultiJson
|
|
95
105
|
# <b>Options</b>
|
96
106
|
#
|
97
107
|
# <tt>:symbolize_keys</tt> :: If true, will use symbols instead of strings for the keys.
|
108
|
+
# <tt>:adapter</tt> :: If set, the selected engine will be used just for the call.
|
98
109
|
def load(string, options={})
|
110
|
+
adapter = current_adapter(options)
|
99
111
|
adapter.load(string, options)
|
100
112
|
rescue adapter::ParseError => exception
|
101
113
|
raise DecodeError.new(exception.message, exception.backtrace, string)
|
102
114
|
end
|
103
115
|
|
116
|
+
def current_adapter(options)
|
117
|
+
if new_adapter = (options || {}).delete(:adapter)
|
118
|
+
load_adapter(new_adapter)
|
119
|
+
else
|
120
|
+
adapter
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
104
124
|
# TODO: Remove for 2.0 release (but no sooner)
|
105
125
|
def encode(object, options={})
|
106
126
|
deprecate("MultiJson.encode is deprecated and will be removed in the next major version. Use MultiJson.dump instead.")
|
@@ -109,6 +129,7 @@ module MultiJson
|
|
109
129
|
|
110
130
|
# Encodes a Ruby object as JSON.
|
111
131
|
def dump(object, options={})
|
132
|
+
adapter = current_adapter(options)
|
112
133
|
adapter.dump(object, options)
|
113
134
|
end
|
114
135
|
|
data/lib/multi_json/version.rb
CHANGED
data/multi_json.gemspec
CHANGED
@@ -25,8 +25,11 @@ Gem::Specification.new do |gem|
|
|
25
25
|
MultiJson.engine is deprecated and will be removed in the next major version.
|
26
26
|
Use MultiJson.adapter instead.
|
27
27
|
|
28
|
-
MultiJson.engine= is deprecated and will be removed in the next major
|
29
|
-
Use MultiJson.use instead.
|
28
|
+
MultiJson.engine= is deprecated and will be removed in the next major
|
29
|
+
version. Use MultiJson.use instead.
|
30
|
+
|
31
|
+
MultiJson.default_engine is deprecated and will be removed in the next major
|
32
|
+
version. Use MultiJson.default_adapter instead.
|
30
33
|
|
31
34
|
********************************************************************************
|
32
35
|
eos
|
data/spec/multi_json_spec.rb
CHANGED
@@ -59,6 +59,21 @@ describe 'MultiJson' do
|
|
59
59
|
MultiJson.use MockDecoder
|
60
60
|
MultiJson.adapter.name.should == 'MockDecoder'
|
61
61
|
end
|
62
|
+
|
63
|
+
context "using one-shot parser" do
|
64
|
+
before(:each) do
|
65
|
+
require 'multi_json/adapters/json_pure'
|
66
|
+
MultiJson::Adapters::JsonPure.should_receive(:dump).exactly(1).times.and_return('dump_something')
|
67
|
+
MultiJson::Adapters::JsonPure.should_receive(:load).exactly(1).times.and_return('load_something')
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should use the defined parser just for the call" do
|
71
|
+
MultiJson.use :yajl
|
72
|
+
MultiJson.dump('', :adapter => :json_pure).should eql('dump_something')
|
73
|
+
MultiJson.load('', :adapter => :json_pure).should eql('load_something')
|
74
|
+
MultiJson.adapter.to_s.should eql("MultiJson::Adapters::Yajl")
|
75
|
+
end
|
76
|
+
end
|
62
77
|
end
|
63
78
|
|
64
79
|
%w(json_gem json_pure nsjsonserialization oj ok_json yajl).each do |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.3.
|
4
|
+
version: 1.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-04-
|
14
|
+
date: 2012-04-17 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rake
|
@@ -117,8 +117,10 @@ post_install_message: ! "*******************************************************
|
|
117
117
|
\ Use MultiJson.dump instead.\n\n MultiJson.decode is deprecated and will be removed
|
118
118
|
in the next major version.\n Use MultiJson.load instead.\n\n MultiJson.engine
|
119
119
|
is deprecated and will be removed in the next major version.\n Use MultiJson.adapter
|
120
|
-
instead.\n\n MultiJson.engine= is deprecated and will be removed in the next major
|
121
|
-
version
|
120
|
+
instead.\n\n MultiJson.engine= is deprecated and will be removed in the next major\n
|
121
|
+
\ version. Use MultiJson.use instead.\n\n MultiJson.default_engine is deprecated
|
122
|
+
and will be removed in the next major\n version. Use MultiJson.default_adapter
|
123
|
+
instead.\n\n********************************************************************************\n"
|
122
124
|
rdoc_options:
|
123
125
|
- --charset=UTF-8
|
124
126
|
require_paths:
|