Module: RubySkynet::Zookeeper::Json::Serializer

Defined in:
lib/ruby_skynet/zookeeper/json/serializer.rb

Overview

Serialize to JSON for storing in Registry

Class Method Summary collapse

Class Method Details

.desymbolize(v) ⇒ Object

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



20
21
22
23
24
25
26
27
28
29
30
# 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) ⇒ Object

Returns a new Array with any symbols returned as symbol strings



46
47
48
# File 'lib/ruby_skynet/zookeeper/json/serializer.rb', line 46

def self.desymbolize_array(a)
  a.collect {|v| desymbolize(v)}
end

.desymbolize_hash(hash) ⇒ Object

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



33
34
35
36
37
38
39
40
41
42
43
# 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) ⇒ Object



50
51
52
# File 'lib/ruby_skynet/zookeeper/json/serializer.rb', line 50

def self.desymbolize_symbol(s)
  ":#{s}"
end

.serialize(value) ⇒ Object



8
9
10
11
12
13
14
15
16
# 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