Class: PropertyBuilder::PropertyList
- Inherits:
-
Hash
- Object
- Hash
- PropertyBuilder::PropertyList
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.
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_order ⇒ Object
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
|
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
|
16
17
18
|
# File 'lib/property_builder.rb', line 16
def first
self[@key_order.first]
end
|