Class: SetAttributes

Inherits:
Object
  • Object
show all
Defined in:
lib/set_attributes/map.rb,
lib/set_attributes/assign.rb,
lib/set_attributes/data_source.rb,
lib/set_attributes/controls/hash.rb,
lib/set_attributes/set_attributes.rb,
lib/set_attributes/controls/object.rb,
lib/set_attributes/controls/mapping.rb,
lib/set_attributes/data_source/hash.rb,
lib/set_attributes/controls/attribute.rb,
lib/set_attributes/data_source/object.rb,
lib/set_attributes/controls/data_source.rb

Defined Under Namespace

Modules: Assign, Controls, DataSource Classes: Map

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(receiver, data_source, attribute_map) ⇒ SetAttributes

Returns a new instance of SetAttributes.



11
12
13
14
15
# File 'lib/set_attributes/set_attributes.rb', line 11

def initialize(receiver, data_source, attribute_map)
  @receiver = receiver
  @data_source = data_source
  @attribute_map = attribute_map
end

Instance Attribute Details

#attribute_mapObject (readonly)

Returns the value of attribute attribute_map.



4
5
6
# File 'lib/set_attributes/set_attributes.rb', line 4

def attribute_map
  @attribute_map
end

#data_sourceObject (readonly)

Returns the value of attribute data_source.



3
4
5
# File 'lib/set_attributes/set_attributes.rb', line 3

def data_source
  @data_source
end

#receiverObject (readonly)

Returns the value of attribute receiver.



2
3
4
# File 'lib/set_attributes/set_attributes.rb', line 2

def receiver
  @receiver
end

#strictObject



6
7
8
# File 'lib/set_attributes/set_attributes.rb', line 6

def strict
  @strict ||= false
end

Class Method Details

.build(receiver, source, copy: nil, include: nil, exclude: nil, strict: nil) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/set_attributes/set_attributes.rb', line 17

def self.build(receiver, source, copy: nil, include: nil, exclude: nil, strict: nil)
  strict ||= false

  unless copy.nil?
    include = copy
  end

  data_source_implementation = DataSource.implementation(source)
  include = data_source_implementation.verify_mapping(source, include)

  attribute_map = SetAttributes::Map.build(include, exclude: exclude)

  data_source = data_source_implementation.build(source)

  new(receiver, data_source, attribute_map).tap do |instance|
    instance.strict = strict
  end
end

.call(receiver, source, include: nil, copy: nil, exclude: nil, strict: nil) ⇒ Object



36
37
38
39
# File 'lib/set_attributes/set_attributes.rb', line 36

def self.call(receiver, source, include: nil, copy: nil, exclude: nil, strict: nil)
  instance = build(receiver, source, copy: copy, include: include, exclude: exclude, strict: strict)
  instance.()
end

Instance Method Details

#callObject



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/set_attributes/set_attributes.rb', line 41

def call
  set_attributes = []

  attribute_map.each_mapping do |source_attribute, receiver_attribute|
    value = data_source.get_value(source_attribute)
    Assign.(receiver, receiver_attribute, value, strict: strict)
    set_attributes << receiver_attribute
  end

  set_attributes
end