| 
									
										
										
										
											2013-01-17 22:25:29 -06:00
										 |  |  | require 'vendor/multi_json/vendor/okjson' | 
					
						
							| 
									
										
										
										
											2011-11-10 12:21:35 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | module MultiJson | 
					
						
							| 
									
										
										
										
											2013-01-14 22:32:37 -06:00
										 |  |  |   module Adapters | 
					
						
							| 
									
										
										
										
											2011-11-10 12:21:35 -08:00
										 |  |  |     class OkJson | 
					
						
							| 
									
										
										
										
											2013-01-14 22:32:37 -06:00
										 |  |  |       ParseError = ::MultiJson::OkJson::Error | 
					
						
							| 
									
										
										
										
											2011-11-10 12:21:35 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-14 22:32:37 -06:00
										 |  |  |       def self.load(string, options={}) #:nodoc: | 
					
						
							| 
									
										
										
										
											2011-11-10 12:21:35 -08:00
										 |  |  |         string = string.read if string.respond_to?(:read) | 
					
						
							| 
									
										
										
										
											2013-01-14 22:32:37 -06:00
										 |  |  |         result = ::MultiJson::OkJson.decode("[#{string}]").first | 
					
						
							| 
									
										
										
										
											2011-11-10 12:21:35 -08:00
										 |  |  |         options[:symbolize_keys] ? symbolize_keys(result) : result | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-14 22:32:37 -06:00
										 |  |  |       def self.dump(object, options={}) #:nodoc: | 
					
						
							|  |  |  |         ::MultiJson::OkJson.valenc(stringify_keys(object)) | 
					
						
							| 
									
										
										
										
											2011-11-10 12:21:35 -08:00
										 |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       def self.symbolize_keys(object) #:nodoc: | 
					
						
							|  |  |  |         modify_keys(object) do |key| | 
					
						
							|  |  |  |           key.is_a?(String) ? key.to_sym : key | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       def self.stringify_keys(object) #:nodoc: | 
					
						
							|  |  |  |         modify_keys(object) do |key| | 
					
						
							| 
									
										
										
										
											2013-01-14 22:32:37 -06:00
										 |  |  |           key.respond_to?(:to_s) ? key.to_s : key | 
					
						
							| 
									
										
										
										
											2011-11-10 12:21:35 -08:00
										 |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       def self.modify_keys(object, &modifier) #:nodoc: | 
					
						
							|  |  |  |         case object | 
					
						
							|  |  |  |         when Array | 
					
						
							|  |  |  |           object.map do |value| | 
					
						
							|  |  |  |             modify_keys(value, &modifier) | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |         when Hash | 
					
						
							|  |  |  |           object.inject({}) do |result, (key, value)| | 
					
						
							|  |  |  |             new_key   = modifier.call(key) | 
					
						
							|  |  |  |             new_value = modify_keys(value, &modifier) | 
					
						
							|  |  |  |             result.merge! new_key => new_value | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |           object | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |