Class: PropertyBuilder::PropertyList

Inherits:
Hash
  • Object
show all
Defined in:
lib/property_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize {|_self| ... } ⇒ PropertyList

Returns a new instance of PropertyList.

Yields:

  • (_self)

Yield Parameters:



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

def initialize(&block)
  @key_order = []
  yield(self)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



40
41
42
43
# File 'lib/property_builder.rb', line 40

def method_missing(name, *args)
  self[name] = nil
  self.send(name, args)
end

Instance Attribute Details

#key_orderObject

Returns the value of attribute key_order.



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

def key_order
  @key_order
end

Instance Method Details

#[](position) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/property_builder.rb', line 20

def [](position)
  if position.is_a?(Integer) && !@key_order.include?(position)
    self[@key_order[position]]
  else
    super
  end
end

#[]=(key, val) ⇒ Object



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

def []= (key,val)
  if not @key_order.include? key
    @key_order << key
  end
  eval("      
    def #{key}(value=nil)
      self[:#{key}]=(value.is_a?(Array) ? value.first : value)||is(:#{key})
    end
  ")
  super key,val
end

#eachObject



10
11
12
13
14
# File 'lib/property_builder.rb', line 10

def each
  @key_order.each do |key|
    yield(key,self[key])
  end
end

#firstObject



16
17
18
# File 'lib/property_builder.rb', line 16

def first
  self[@key_order.first]
end