class SetAttributes

Attributes

attribute_map[R]
data_source[R]
receiver[R]
strict[W]

Public Class Methods

build(receiver, source, copy: nil, include: nil, exclude: nil, strict: nil) click to toggle source
# 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) click to toggle source
# 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
new(receiver, data_source, attribute_map) click to toggle source
# 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

Public Instance Methods

call() click to toggle source
# 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
strict() click to toggle source
# File lib/set_attributes/set_attributes.rb, line 6
def strict
  @strict ||= false
end