Class: Rubber::Configuration::Environment::HashValueProxy
- Inherits:
-
Hash
- Object
- Hash
- Rubber::Configuration::Environment::HashValueProxy
show all
- Defined in:
- lib/rubber/environment.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(global, receiver) ⇒ HashValueProxy
Returns a new instance of HashValueProxy.
84
85
86
87
88
|
# File 'lib/rubber/environment.rb', line 84
def initialize(global, receiver)
@global = global
super()
replace(receiver)
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_id) ⇒ Object
106
107
108
109
|
# File 'lib/rubber/environment.rb', line 106
def method_missing(method_id)
key = method_id.id2name
return self[key]
end
|
Instance Attribute Details
#global ⇒ Object
Returns the value of attribute global.
82
83
84
|
# File 'lib/rubber/environment.rb', line 82
def global
@global
end
|
Instance Method Details
#[](name) ⇒ Object
94
95
96
97
98
|
# File 'lib/rubber/environment.rb', line 94
def [](name)
value = super(name)
value = global[name] if global && !value
return expand(value)
end
|
#each ⇒ Object
100
101
102
103
104
|
# File 'lib/rubber/environment.rb', line 100
def each
each_key do |key|
yield key, self[key]
end
end
|
#expand(value) ⇒ Object
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# File 'lib/rubber/environment.rb', line 120
def expand(value)
val = case value
when Hash
HashValueProxy.new(global || self, value)
when String
expand_string(value)
when Enumerable
value.collect {|v| expand(v) }
else
value
end
return val
end
|
#expand_string(val) ⇒ Object
111
112
113
114
115
116
117
118
|
# File 'lib/rubber/environment.rb', line 111
def expand_string(val)
while val =~ /\#\{[^\}]+\}/
val = eval('%Q{' + val + '}', binding)
end
val = true if val =="true"
val = false if val == "false"
return val
end
|
#rubber_instances ⇒ Object