Module: ValueClass::Constructable::ClassMethods

Defined in:
lib/value_class/constructable.rb

Instance Method Summary collapse

Instance Method Details

#config {|config| ... } ⇒ Object

Constructs an instance using the configuration created in the passed in block.

Yields:



28
29
30
31
32
33
34
35
36
37
# File 'lib/value_class/constructable.rb', line 28

def config
  config = config_class.new
  value_attributes.each do |attr|
    if attr.default
      config.send("#{attr.name}=", attr.default)
    end
  end
  yield config
  new(config)
end

#config_classObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/value_class/constructable.rb', line 39

def config_class
  unless @config_class
    @config_class = Class.new

    value_attributes.each do |attribute|
      # Define assignment operator
      @config_class.send(:attr_writer, attribute.name)

      define_accessor(attribute)
      if (insert_method = attribute.options[:insert_method])
        define_insert(attribute, insert_method)
      end
    end
  end
  @config_class
end