Method: ContractValueObject.attributes

Defined in:
lib/contract_value_object.rb

.attributes(attributes = nil) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/contract_value_object.rb', line 11

def attributes(attributes = nil)
  if attributes.nil?
    return @attributes if instance_variable_defined?(:@attributes)
    raise ArgumentError, 'Calling for attributes without having defined them.'
  end

  attr_accessor(*attributes.keys)
  attr_writers = attributes.keys.map { |attribute| :"#{attribute}=" }
  private *attr_writers

  @attributes = attributes
end