Class: Hari::Entity::Property

Inherits:
Object
  • Object
show all
Defined in:
lib/hari/entity/property.rb,
lib/hari/entity/property/builder.rb

Defined Under Namespace

Modules: Builder

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(entity, name, options = {}) ⇒ Property

Returns a new instance of Property.



8
9
10
11
# File 'lib/hari/entity/property.rb', line 8

def initialize(entity, name, options = {})
  @entity, @name, @options = entity, name.to_s, options
  @serializer = options.delete(:type) || Serialization::String
end

Instance Attribute Details

#entityObject

Returns the value of attribute entity.



6
7
8
# File 'lib/hari/entity/property.rb', line 6

def entity
  @entity
end

#nameObject

Returns the value of attribute name.



6
7
8
# File 'lib/hari/entity/property.rb', line 6

def name
  @name
end

#optionsObject

Returns the value of attribute options.



6
7
8
# File 'lib/hari/entity/property.rb', line 6

def options
  @options
end

#serializerObject

Returns the value of attribute serializer.



6
7
8
# File 'lib/hari/entity/property.rb', line 6

def serializer
  @serializer
end

Instance Method Details

#defaultObject



13
14
15
16
17
18
19
20
# File 'lib/hari/entity/property.rb', line 13

def default
  case options[:default]
  when Proc
    options[:default].call
  else
    options[:default]
  end
end

#desserialize(value) ⇒ Object



32
33
34
# File 'lib/hari/entity/property.rb', line 32

def desserialize(value)
  serializer.desserialize value, name: name
end

#serialize(entity) ⇒ Object



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

def serialize(entity)
  value = entity.attribute(name)

  if value.nil?
    value = entity.write_attribute(name, default)
  end

  serializer.serialize value, name: name
end