class Undo::Serializer::Primitive

Public Instance Methods

deserialize(primitive_data, options = {}) click to toggle source
# 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) click to toggle source
# File lib/undo/serializer/primitive.rb, line 39
def deserialize?(hash)
  name == (hash[:serializer] || hash["serializer"]) rescue false
end
name() click to toggle source
# File lib/undo/serializer/primitive.rb, line 4
def name
  "primitive"
end
serialize(primitive, options = {}) click to toggle source
# File lib/undo/serializer/primitive.rb, line 8
def serialize(primitive, options = {})
  {
    serializer: name,
    object: primitive,
    class_name: primitive.class.name
  }
end
serialize?(object) click to toggle source
# 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

Private Instance Methods

get_option(name, options) click to toggle source
# File lib/undo/serializer/primitive.rb, line 44
def get_option(name, options)
  options.fetch name.to_sym do
    options.fetch name.to_s
  end
end