Sha256: d1448cd8479e32d148d3167879d3e97ebaa6d62256d1441ce2aac80a9ea31bd5
Contents?: true
Size: 1.23 KB
Versions: 1
Compression:
Stored size: 1.23 KB
Contents
module Undo module Serializer class Primitive def name "primitive" end def serialize(primitive, options = {}) { serializer: name, object: primitive, class_name: primitive.class.name } end 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 else Kernel.send primitive_class, object end end 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 def deserialize?(hash) name == (hash[:serializer] || hash["serializer"]) end private def get_option(name, options) options.fetch name.to_sym do options.fetch name.to_s end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
undo-serializer-primitive-0.0.1 | lib/undo/serializer/primitive.rb |