Module: Hari::Entity::Serialization

Extended by:
ActiveSupport::Concern
Included in:
Hari::Entity
Defined in:
lib/hari/entity/serialization.rb,
lib/hari/entity/serialization/date.rb,
lib/hari/entity/serialization/hash.rb,
lib/hari/entity/serialization/time.rb,
lib/hari/entity/serialization/array.rb,
lib/hari/entity/serialization/float.rb,
lib/hari/entity/serialization/string.rb,
lib/hari/entity/serialization/boolean.rb,
lib/hari/entity/serialization/integer.rb,
lib/hari/entity/serialization/datetime.rb

Defined Under Namespace

Modules: Array, Boolean, ClassMethods, Date, DateTime, Float, Hash, Integer, String, Time

Instance Method Summary collapse

Instance Method Details

#attributesObject



32
33
34
35
36
# File 'lib/hari/entity/serialization.rb', line 32

def attributes
  self.class.properties.inject({}) do |buffer, prop|
    buffer.merge prop.name => send(prop.name)
  end
end

#initialize(attrs = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/hari/entity/serialization.rb', line 22

def initialize(attrs = {})
  return if attrs.blank?

  attrs = attrs.with_indifferent_access

  self.class.properties.each do |prop|
    write_attribute(prop.name, attrs[prop.name]) if attrs.key?(prop.name)
  end
end

#to_hashObject



47
48
49
50
51
# File 'lib/hari/entity/serialization.rb', line 47

def to_hash
  self.class.properties.inject({}) do |buffer, prop|
    buffer.merge prop.name => prop.serialize(self)
  end
end

#to_jsonObject



53
54
55
# File 'lib/hari/entity/serialization.rb', line 53

def to_json
  Yajl::Encoder.encode to_hash
end

#write_attribute(name, value) ⇒ Object



43
44
45
# File 'lib/hari/entity/serialization.rb', line 43

def write_attribute(name, value)
  send "#{name}=", value
end