Class: Undo::Serializer::Primitive

Inherits:
Object
  • Object
show all
Defined in:
lib/undo/serializer/primitive.rb

Instance Method Summary collapse

Instance Method Details

#deserialize(primitive_data, options = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/undo/serializer/primitive.rb', line 16

def deserialize(primitive_data, options = {})
  primitive_class = get_option :class_name, primitive_data
  object = get_option :object, primitive_data

  return case primitive_class
         when "Fixnum"     then object.to_i
         when "Symbol"     then object.to_sym
         when "TrueClass"  then true
         when "FalseClass" then false
         when "NilClass"   then nil
         when "Hash"       then Hash.new object # for Ruby < 2.0
         else Kernel.send primitive_class, object
         end
end

#deserialize?(hash) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/undo/serializer/primitive.rb', line 39

def deserialize?(hash)
  name == (hash[:serializer] || hash["serializer"]) rescue false
end

#nameObject



4
5
6
# File 'lib/undo/serializer/primitive.rb', line 4

def name
  "primitive"
end

#serialize(primitive, options = {}) ⇒ Object



8
9
10
11
12
13
14
# File 'lib/undo/serializer/primitive.rb', line 8

def serialize(primitive, options = {})
  {
    serializer: name,
    object: primitive,
    class_name: primitive.class.name
  }
end

#serialize?(object) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
34
35
36
37
# File 'lib/undo/serializer/primitive.rb', line 31

def serialize?(object)
  case object
  when Integer, Float, Symbol, String, true, false, nil then true
  when Array, Hash then object.empty?
  else false
  end
end