module RubySkynet::Zookeeper::Json::Serializer

Serialize to JSON for storing in Registry

Public Class Methods

desymbolize(v) click to toggle source

Returns the supplied value with symbols converted to a string prefixed with ‘:’

# File lib/ruby_skynet/zookeeper/json/serializer.rb, line 20
def self.desymbolize(v)
  if v.is_a?(Hash)
    desymbolize_hash(v)
  elsif v.is_a?(Array)
    desymbolize_array(v)
  elsif v.is_a?(Symbol)
    desymbolize_symbol(v)
  else
    v.to_s
  end
end
desymbolize_array(a) click to toggle source

Returns a new Array with any symbols returned as symbol strings

# File lib/ruby_skynet/zookeeper/json/serializer.rb, line 46
def self.desymbolize_array(a)
  a.collect {|v| desymbolize(v)}
end
desymbolize_hash(hash) click to toggle source

Returns a new hash with all symbol keys and values as strings starting with ‘:’

# File lib/ruby_skynet/zookeeper/json/serializer.rb, line 33
def self.desymbolize_hash(hash)
  h = hash.dup
  hash.each_pair do |k, v|
    # Convert values in the hash
    h[k] = desymbolize(v)

    # Convert key to a string if it is a symbol
    h[desymbolize_symbol(k)] = h.delete(k) if k.is_a?(Symbol)
  end
  h
end
desymbolize_symbol(s) click to toggle source
# File lib/ruby_skynet/zookeeper/json/serializer.rb, line 50
def self.desymbolize_symbol(s)
  ":#{s}"
end
serialize(value) click to toggle source
# File lib/ruby_skynet/zookeeper/json/serializer.rb, line 8
def self.serialize(value)
  if value.is_a?(Hash) || value.is_a?(Array)
    MultiJson.encode(desymbolize(value))
  elsif value.is_a?(Symbol)
    desymbolize_symbol(value)
  else
    value.to_s
  end
end