| 
									
										
										
										
											2016-11-17 23:16:21 -05:00
										 |  |  | require "json" | 
					
						
							| 
									
										
										
										
											2013-06-22 16:51:08 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | module Utils | 
					
						
							|  |  |  |   module JSON | 
					
						
							| 
									
										
										
										
											2016-09-23 17:36:27 +02:00
										 |  |  |     module_function | 
					
						
							| 
									
										
										
										
											2013-06-22 16:51:08 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     Error = Class.new(StandardError) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def load(str) | 
					
						
							| 
									
										
										
										
											2016-11-20 12:43:13 -05:00
										 |  |  |       odeprecated "Utils::JSON.load", "JSON.parse" | 
					
						
							|  |  |  |       ::JSON.parse(str) | 
					
						
							| 
									
										
										
										
											2016-11-17 23:16:21 -05:00
										 |  |  |     rescue ::JSON::ParserError => e | 
					
						
							| 
									
										
										
										
											2013-06-22 16:51:08 -05:00
										 |  |  |       raise Error, e.message | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def dump(obj) | 
					
						
							| 
									
										
										
										
											2016-11-20 12:43:13 -05:00
										 |  |  |       odeprecated "Utils::JSON.dump", "JSON.generate" | 
					
						
							| 
									
										
										
										
											2016-11-17 23:16:21 -05:00
										 |  |  |       ::JSON.generate(obj) | 
					
						
							| 
									
										
										
										
											2013-06-22 16:51:09 -05:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def stringify_keys(obj) | 
					
						
							| 
									
										
										
										
											2016-11-20 12:43:13 -05:00
										 |  |  |       odeprecated "Utils::JSON.stringify_keys" | 
					
						
							| 
									
										
										
										
											2013-06-22 16:51:09 -05:00
										 |  |  |       case obj | 
					
						
							|  |  |  |       when Array | 
					
						
							|  |  |  |         obj.map { |val| stringify_keys(val) } | 
					
						
							|  |  |  |       when Hash | 
					
						
							|  |  |  |         obj.inject({}) do |result, (key, val)| | 
					
						
							|  |  |  |           key = key.respond_to?(:to_s) ? key.to_s : key | 
					
						
							|  |  |  |           val = stringify_keys(val) | 
					
						
							| 
									
										
										
										
											2015-12-26 23:00:38 +01:00
										 |  |  |           result.merge!(key => val) | 
					
						
							| 
									
										
										
										
											2013-06-22 16:51:09 -05:00
										 |  |  |         end | 
					
						
							|  |  |  |       else | 
					
						
							|  |  |  |         obj | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2013-06-22 16:51:08 -05:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |