module PhusionPassenger::Utils::JSON::Generator
Constants
- ESC_MAP
Public Instance Methods
generate(obj)
click to toggle source
# File lib/phusion_passenger/utils/json.rb, line 135 def generate(obj) raise ArgumentError unless obj.is_a? Array or obj.is_a? Hash generate_type(obj) end
Also aliased as: dump
Private Instance Methods
generate_Array(ary)
click to toggle source
# File lib/phusion_passenger/utils/json.rb, line 177 def generate_Array(ary) '[%s]' % ary.map {|o| generate_type(o) }.join(', ') end
generate_Date(date)
click to toggle source
# File lib/phusion_passenger/utils/json.rb, line 173 def generate_Date(date) quote date.to_s end
generate_Hash(hash)
click to toggle source
# File lib/phusion_passenger/utils/json.rb, line 179 def generate_Hash(hash) '{%s}' % hash.map { |key, value| "#{generate_String(key.to_s)}: #{generate_type(value)}" }.join(', ') end
generate_NilClass(*)
click to toggle source
# File lib/phusion_passenger/utils/json.rb, line 175 def generate_NilClass(*) 'null' end
generate_String(str)
click to toggle source
# File lib/phusion_passenger/utils/json.rb, line 159 def generate_String(str) quote str.gsub(/[\r\n\f\t\b"\\]/) { "\\#{ESC_MAP[$&]}"} end
generate_Symbol(sym)
click to toggle source
# File lib/phusion_passenger/utils/json.rb, line 168 def generate_Symbol(sym) generate_String(sym.to_s) end
generate_Time(time)
click to toggle source
# File lib/phusion_passenger/utils/json.rb, line 170 def generate_Time(time) quote time.strftime(time.utc? ? "%F %T UTC" : "%F %T %z") end
generate_simple(obj)
click to toggle source
# File lib/phusion_passenger/utils/json.rb, line 163 def generate_simple(obj) obj.inspect end
generate_type(obj)
click to toggle source
# File lib/phusion_passenger/utils/json.rb, line 143 def generate_type(obj) type = obj.is_a?(Numeric) ? :Numeric : obj.class.name begin send(:"generate_#{type}", obj) rescue NoMethodError; raise ArgumentError, "can't serialize #{type}" end end
quote(str)
click to toggle source
# File lib/phusion_passenger/utils/json.rb, line 157 def quote(str) %("#{str}") end