Module: DSeL::DSL::Mixins::Environment::IvarExplorer

Included in:
Nodes::Proxy::Environment
Defined in:
lib/dsel/dsl/mixins/environment/ivar_explorer.rb

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/dsel/dsl/mixins/environment/ivar_explorer.rb', line 8

def method_missing( name, *args, &block )
    first_letter = name[0...1]

    if block && first_letter == first_letter.capitalize
        ivar = "@#{name}".to_sym
        return _dsel_node_for_ivar( ivar, &block )
    end

    super( name, *args, &block )
end

Instance Method Details

#_dsel_node_for_ivar(ivar, &block) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/dsel/dsl/mixins/environment/ivar_explorer.rb', line 20

def _dsel_node_for_ivar( ivar, &block )
    ivar = ivar.downcase
    if !_dsel_node.subject.instance_variable_defined?( ivar )
        fail ArgumentError, "Instance variable not defined: #{ivar}"
    end

    _dsel_node.node_for( _dsel_node.subject.instance_variable_get( ivar ) ).run( &block )
end