Class: Dslh::Scope
- Inherits:
-
Object
- Object
- Dslh::Scope
- Defined in:
- lib/dslh.rb
Instance Method Summary collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args, &block) ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/dslh.rb', line 121 def method_missing(method_name, *args, &block) key_conv = [:key_conv] || [:conv] value_conv = [:value_conv] || [:conv] nested_hash = nil if block hash_orig = @__hash__ @__hash__ = {} self.instance_eval(&block) nested_hash = @__hash__ @__hash__ = hash_orig end method_name = key_conv.call(method_name) if key_conv if args.empty? @__hash__[method_name] = nested_hash else args = args.map {|i| value_conv.call(i) } if value_conv value = args.length > 1 ? args : args[0] if nested_hash @__hash__[method_name] = { value => nested_hash } else @__hash__[method_name] = value end return @__hash__ end end |