Class: Setsumei::Describable::ObjectAttribute

Inherits:
Object
  • Object
show all
Defined in:
lib/setsumei/describable/object_attribute.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeObjectAttribute

Returns a new instance of ObjectAttribute.



17
18
19
# File 'lib/setsumei/describable/object_attribute.rb', line 17

def initialize
  self.klass = Object
end

Instance Attribute Details

#klassObject

Returns the value of attribute klass.



15
16
17
# File 'lib/setsumei/describable/object_attribute.rb', line 15

def klass
  @klass
end

#nameObject

Returns the value of attribute name.



15
16
17
# File 'lib/setsumei/describable/object_attribute.rb', line 15

def name
  @name
end

#optionsObject

Returns the value of attribute options.



15
16
17
# File 'lib/setsumei/describable/object_attribute.rb', line 15

def options
  @options
end

Class Method Details

.named(name, options = {}) ⇒ Object

Raises:

  • (ArgumentError)


5
6
7
8
9
10
11
12
13
# File 'lib/setsumei/describable/object_attribute.rb', line 5

def ObjectAttribute.named(name,options = {})
  options = options.dup
  raise ArgumentError.new("you must specify what the object is") unless options.has_key? :as_a
  new.tap do |attribute|
    attribute.name = name
    attribute.klass = options.delete(:as_a)
    attribute.options = options
  end
end

Instance Method Details

#is_an_attribute_of_type?(type) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/setsumei/describable/object_attribute.rb', line 31

def is_an_attribute_of_type?(type)
  type == :object || type == self.class || type == self.klass
end

#set_value_on(object, options) ⇒ Object



35
36
37
# File 'lib/setsumei/describable/object_attribute.rb', line 35

def set_value_on(object, options)
  object.send accessor, value_from_hash(options[:from_value_in])
end

#value_for(data) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/setsumei/describable/object_attribute.rb', line 21

def value_for(data)
  return nil if data.nil? || data.empty?

  begin
    self.klass.create_from data
  rescue NoMethodError
    Build.a self.klass, from: data
  end
end