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



189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
# File 'lib/dslh.rb', line 189

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



185
186
187
# File 'lib/dslh.rb', line 185

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