module Hub::JSON::Generator

Constants

ESC_MAP

Public Instance Methods

dump(obj)
Alias for: generate
generate(obj) click to toggle source
# File lib/hub/json.rb, line 99
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/hub/json.rb, line 135
def generate_Array(ary) '[%s]' % ary.map {|o| generate_type(o) }.join(', ') end
generate_FalseClass(obj)
Alias for: generate_simple
generate_Hash(hash) click to toggle source
# File lib/hub/json.rb, line 137
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/hub/json.rb, line 133
def generate_NilClass(*) 'null' end
generate_Numeric(obj)
Alias for: generate_simple
generate_String(str) click to toggle source
# File lib/hub/json.rb, line 121
def generate_String(str)
  escaped = str.gsub(/[\r\n\f\t\b"\]/) { "\\#{ESC_MAP[$&]}"}
  %Q("#{escaped}")
end
generate_Symbol(sym) click to toggle source
# File lib/hub/json.rb, line 131
def generate_Symbol(sym) generate_String(sym.to_s) end
generate_TrueClass(obj)
Alias for: generate_simple
generate_simple(obj) click to toggle source
# File lib/hub/json.rb, line 126
def generate_simple(obj) obj.inspect end
generate_type(obj) click to toggle source
# File lib/hub/json.rb, line 107
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