multi_json 1.3.3 → 1.3.4

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 CHANGED
@@ -8,8 +8,6 @@ module MultiJson
8
8
  end
9
9
  end
10
10
 
11
- module_function
12
-
13
11
  @adapter = nil
14
12
 
15
13
  REQUIREMENT_MAP = [
@@ -19,98 +17,102 @@ module MultiJson
19
17
  ["json/pure", :json_pure]
20
18
  ]
21
19
 
22
- # The default adapter based on what you currently
23
- # have loaded and installed. First checks to see
24
- # if any adapters are already loaded, then checks
25
- # to see which are installed if none are loaded.
26
- def default_adapter
27
- return :oj if defined?(::Oj)
28
- return :yajl if defined?(::Yajl)
29
- return :json_gem if defined?(::JSON)
20
+ class << self
21
+
22
+ # The default adapter based on what you currently
23
+ # have loaded and installed. First checks to see
24
+ # if any adapters are already loaded, then checks
25
+ # to see which are installed if none are loaded.
26
+ def default_adapter
27
+ return :oj if defined?(::Oj)
28
+ return :yajl if defined?(::Yajl)
29
+ return :json_gem if defined?(::JSON)
30
30
 
31
- REQUIREMENT_MAP.each do |(library, adapter)|
32
- begin
33
- require library
34
- return adapter
35
- rescue LoadError
36
- next
31
+ REQUIREMENT_MAP.each do |(library, adapter)|
32
+ begin
33
+ require library
34
+ return adapter
35
+ rescue LoadError
36
+ next
37
+ end
37
38
  end
39
+
40
+ Kernel.warn "[WARNING] MultiJson is using the default adapter (ok_json). We recommend loading a different JSON library to improve performance."
41
+ :ok_json
38
42
  end
43
+ # :nodoc:
44
+ alias :default_engine :default_adapter
39
45
 
40
- Kernel.warn "[WARNING] MultiJson is using the default adapter (ok_json). We recommend loading a different JSON library to improve performance."
41
- :ok_json
42
- end
43
- # :nodoc:
44
- alias :default_engine :default_adapter
46
+ # Get the current adapter class.
47
+ def adapter
48
+ return @adapter if @adapter
49
+ self.use self.default_adapter
50
+ @adapter
51
+ end
52
+ # :nodoc:
53
+ alias :engine :adapter
45
54
 
46
- # Get the current adapter class.
47
- def adapter
48
- return @adapter if @adapter
49
- self.use self.default_adapter
50
- @adapter
51
- end
52
- # :nodoc:
53
- alias :engine :adapter
55
+ # Set the JSON parser utilizing a symbol, string, or class.
56
+ # Supported by default are:
57
+ #
58
+ # * <tt>:oj</tt>
59
+ # * <tt>:json_gem</tt>
60
+ # * <tt>:json_pure</tt>
61
+ # * <tt>:ok_json</tt>
62
+ # * <tt>:yajl</tt>
63
+ # * <tt>:nsjsonserialization</tt> (MacRuby only)
64
+ def use(new_adapter)
65
+ @adapter = load_adapter(new_adapter)
66
+ end
67
+ alias :adapter= :use
68
+ # :nodoc:
69
+ alias :engine= :use
54
70
 
55
- # Set the JSON parser utilizing a symbol, string, or class.
56
- # Supported by default are:
57
- #
58
- # * <tt>:oj</tt>
59
- # * <tt>:json_gem</tt>
60
- # * <tt>:json_pure</tt>
61
- # * <tt>:ok_json</tt>
62
- # * <tt>:yajl</tt>
63
- # * <tt>:nsjsonserialization</tt> (MacRuby only)
64
- def use(new_adapter)
65
- @adapter = load_adapter(new_adapter)
66
- end
67
- alias :adapter= :use
68
- # :nodoc:
69
- alias :engine= :use
71
+ def load_adapter(new_adapter)
72
+ case new_adapter
73
+ when String, Symbol
74
+ require "multi_json/adapters/#{new_adapter}"
75
+ MultiJson::Adapters.const_get("#{new_adapter.to_s.split('_').map{|s| s.capitalize}.join('')}")
76
+ when NilClass
77
+ nil
78
+ when Class
79
+ new_adapter
80
+ else
81
+ raise "Did not recognize your adapter specification. Please specify either a symbol or a class."
82
+ end
83
+ end
70
84
 
71
- def load_adapter(new_adapter)
72
- case new_adapter
73
- when String, Symbol
74
- require "multi_json/adapters/#{new_adapter}"
75
- MultiJson::Adapters.const_get("#{new_adapter.to_s.split('_').map{|s| s.capitalize}.join('')}")
76
- when NilClass
77
- nil
78
- when Class
79
- new_adapter
80
- else
81
- raise "Did not recognize your adapter specification. Please specify either a symbol or a class."
85
+ # Decode a JSON string into Ruby.
86
+ #
87
+ # <b>Options</b>
88
+ #
89
+ # <tt>:symbolize_keys</tt> :: If true, will use symbols instead of strings for the keys.
90
+ # <tt>:adapter</tt> :: If set, the selected engine will be used just for the call.
91
+ def load(string, options={})
92
+ adapter = current_adapter(options)
93
+ adapter.load(string, options)
94
+ rescue adapter::ParseError => exception
95
+ raise DecodeError.new(exception.message, exception.backtrace, string)
82
96
  end
83
- end
97
+ # :nodoc:
98
+ alias :decode :load
84
99
 
85
- # Decode a JSON string into Ruby.
86
- #
87
- # <b>Options</b>
88
- #
89
- # <tt>:symbolize_keys</tt> :: If true, will use symbols instead of strings for the keys.
90
- # <tt>:adapter</tt> :: If set, the selected engine will be used just for the call.
91
- def load(string, options={})
92
- adapter = current_adapter(options)
93
- adapter.load(string, options)
94
- rescue adapter::ParseError => exception
95
- raise DecodeError.new(exception.message, exception.backtrace, string)
96
- end
97
- # :nodoc:
98
- alias :decode :load
100
+ def current_adapter(options)
101
+ if new_adapter = (options || {}).delete(:adapter)
102
+ load_adapter(new_adapter)
103
+ else
104
+ adapter
105
+ end
106
+ end
99
107
 
100
- def current_adapter(options)
101
- if new_adapter = (options || {}).delete(:adapter)
102
- load_adapter(new_adapter)
103
- else
104
- adapter
108
+ # Encodes a Ruby object as JSON.
109
+ def dump(object, options={})
110
+ adapter = current_adapter(options)
111
+ adapter.dump(object, options)
105
112
  end
106
- end
113
+ # :nodoc:
114
+ alias :encode :dump
107
115
 
108
- # Encodes a Ruby object as JSON.
109
- def dump(object, options={})
110
- adapter = current_adapter(options)
111
- adapter.dump(object, options)
112
116
  end
113
- # :nodoc:
114
- alias :encode :dump
115
117
 
116
118
  end
@@ -1,3 +1,3 @@
1
1
  module MultiJson
2
- VERSION = "1.3.3"
2
+ VERSION = "1.3.4"
3
3
  end
@@ -68,10 +68,10 @@ describe 'MultiJson' do
68
68
  end
69
69
 
70
70
  it "should use the defined parser just for the call" do
71
- MultiJson.use :yajl
71
+ MultiJson.use :json_gem
72
72
  MultiJson.dump('', :adapter => :json_pure).should eql('dump_something')
73
73
  MultiJson.load('', :adapter => :json_pure).should eql('load_something')
74
- MultiJson.adapter.to_s.should eql("MultiJson::Adapters::Yajl")
74
+ MultiJson.adapter.to_s.should eql("MultiJson::Adapters::JsonGem")
75
75
  end
76
76
  end
77
77
  end
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.3
4
+ version: 1.3.4
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-28 00:00:00.000000000 Z
14
+ date: 2012-04-29 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rake
@@ -123,6 +123,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
123
  - - ! '>='
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
+ segments:
127
+ - 0
128
+ hash: 3342711038323069490
126
129
  required_rubygems_version: !ruby/object:Gem::Requirement
127
130
  none: false
128
131
  requirements:
@@ -139,4 +142,3 @@ test_files:
139
142
  - spec/adapter_shared_example.rb
140
143
  - spec/helper.rb
141
144
  - spec/multi_json_spec.rb
142
- has_rdoc: