Class: Dslh::Scope

Inherits:
Object
  • Object
show all
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



173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
# File 'lib/dslh.rb', line 173

def method_missing(method_name, *args, &block)
  key_conv = @__options__[:key_conv] || @__options__[:conv]
  value_conv = @__options__[:value_conv] || @__options__[:conv]
  nested_hash = ScopeBlock.nest(binding, 'block')
  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

Instance Method Details

#_(&block) ⇒ Object



169
170
171
# File 'lib/dslh.rb', line 169

def _(&block)
  ScopeBlock.nest(binding, 'block')
end