Class: DSeL::DSL::Nodes::Base
- Inherits:
-
Node
show all
- Defined in:
- lib/dsel/dsl/nodes/base.rb,
lib/dsel/dsl/nodes/base/environment.rb
Defined Under Namespace
Modules: Environment
Instance Attribute Summary collapse
Attributes inherited from Node
#parent, #root, #subject
Instance Method Summary
collapse
Methods inherited from Node
#_dsel_node, #calc_node_hash, #hash, #root?
Constructor Details
#initialize ⇒ Base
Returns a new instance of Base.
11
12
13
14
15
16
17
18
|
# File 'lib/dsel/dsl/nodes/base.rb', line 11
def initialize(*)
super
@shared_variables = {}
@nodes = {}
cache_node( self )
end
|
Instance Attribute Details
9
10
11
|
# File 'lib/dsel/dsl/nodes/base.rb', line 9
def environment
@environment
end
|
Instance Method Details
#cache_node(node) ⇒ Object
30
31
32
|
# File 'lib/dsel/dsl/nodes/base.rb', line 30
def cache_node( node )
nodes[node.hash] ||= node
end
|
#node_for(subject, options = {}) ⇒ Object
35
36
37
38
|
# File 'lib/dsel/dsl/nodes/base.rb', line 35
def node_for( subject, options = {} )
nodes[calc_node_hash( subject )] ||=
self.class.new( subject, options.merge( parent: self ) )
end
|
21
22
23
|
# File 'lib/dsel/dsl/nodes/base.rb', line 21
def nodes
root? ? @nodes : @root.nodes
end
|
#run(script = nil, &block) ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/dsel/dsl/nodes/base.rb', line 40
def run( script = nil, &block )
if script && block
fail ArgumentError, 'Cannot use both script and &block.'
end
begin
prepare
calling do
if block
return @environment.instance_eval( &block )
end
if script
@environment.instance_eval do
return eval( IO.read( script ) )
end
end
end
ensure
return if calling?
return if !@environment.respond_to?( Environment::DSEL_NODE_ACCESSOR )
cleanup
end
end
|
#shared_variables ⇒ Object
25
26
27
|
# File 'lib/dsel/dsl/nodes/base.rb', line 25
def shared_variables
root? ? @shared_variables : @root.shared_variables
end
|