Class: Configr::ConfigurationBlock

Inherits:
Object
  • Object
show all
Defined in:
lib/configr/configuration_block.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ ConfigurationBlock

Returns a new instance of ConfigurationBlock.



5
6
7
# File 'lib/configr/configuration_block.rb', line 5

def initialize(attributes={})
  self.attributes = Hash.new(attributes)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/configr/configuration_block.rb', line 9

def method_missing(method, *args, &block)
  name = method.to_s
  
  case
  when name.include?('=')
    key = name.gsub('=','').to_sym
    self.attributes[key] = args.first
  when existing_block_attributes = self.attributes[method]
    existing_block = ConfigurationBlock.new(existing_block_attributes)
    self.attributes[method] = existing_block.attributes
    existing_block
  else
    nested_block = ConfigurationBlock.new
    self.attributes[method] = nested_block.attributes
    nested_block
  end
end

Instance Attribute Details

#attributesObject

Returns the value of attribute attributes.



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

def attributes
  @attributes
end