Module: ARSerialize

Defined in:
lib/ar_serialize.rb

Constant Summary collapse

VERSION =
File.read( File.join(File.dirname(__FILE__),'..','VERSION') ).strip

Class Method Summary collapse

Class Method Details

.deserialize(v) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/ar_serialize.rb', line 22

def self.deserialize(v)
  if v.is_a?(String) and v =~ /^ActiveRecord:(\w+):(\d+)$/
    $1.constantize.find($2)
  elsif v.is_a?(Hash)
    result = Hash[v.map do |k,value|
      [k, deserialize(value)]
    end]

    v.is_a?(HashWithIndifferentAccess) ? result.with_indifferent_access : result
  elsif v.is_a?(Array)
    v.map do |value|
      deserialize(value)
    end
  else
    v
  end
end

.serialize(v) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/ar_serialize.rb', line 6

def self.serialize(v)
  if v.is_a?(ActiveRecord::Base)
    "ActiveRecord:#{v.class}:#{v.id}"
  elsif v.is_a?(Hash)
    Hash[v.map do |k,value|
      [k, serialize(value)]
    end]
  elsif v.is_a?(Array)
    v.map do |value|
      serialize(value)
    end
  else
    v
  end
end