Helper method for grabbing elements from document
Like ‘take_while` except when it stops iterating, it also returns the line that caused it to stop
Dispatch enter and leave events for InstanceVariableWriteNode
nodes and continue walking the tree.
Create a new InstanceVariableAndWriteNode
node.
Create a new InstanceVariableOperatorWriteNode
node.
Create a new InstanceVariableOrWriteNode
node.
Iterates over strongly connected component in the subgraph reachable from node.
Return value is unspecified.
each_strongly_connected_component_from
doesn’t call tsort_each_node
.
class G include TSort def initialize(g) @g = g end def tsort_each_child(n, &b) @g[n].each(&b) end def tsort_each_node(&b) @g.each_key(&b) end end graph = G.new({1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]}) graph.each_strongly_connected_component_from(2) {|scc| p scc } #=> [4] # [2] graph = G.new({1=>[2], 2=>[3, 4], 3=>[2], 4=>[]}) graph.each_strongly_connected_component_from(2) {|scc| p scc } #=> [4] # [2, 3]
Iterates over strongly connected components in a graph. The graph is represented by node and each_child.
node is the first node. each_child should have call
method which takes a node argument and yields for each child node.
Return value is unspecified.
TSort.each_strongly_connected_component_from is a class method and it doesn’t need a class to represent a graph which includes TSort
.
graph = {1=>[2], 2=>[3, 4], 3=>[2], 4=>[]} each_child = lambda {|n, &b| graph[n].each(&b) } TSort.each_strongly_connected_component_from(1, each_child) {|scc| p scc } #=> [4] # [2, 3] # [1]
Compile a InstanceVariableOperatorWriteNode
node
@foo &&= bar
becomes
@foo && @foo = bar
@foo ||= bar
becomes
@foo || @foo = bar
@foo += bar
becomes
@foo = @foo + bar
Dispatch enter and leave events for InstanceVariableAndWriteNode
nodes and continue walking the tree.
Dispatch enter and leave events for InstanceVariableOperatorWriteNode
nodes and continue walking the tree.
Dispatch enter and leave events for InstanceVariableOrWriteNode
nodes and continue walking the tree.
Inspect a InstanceVariableAndWriteNode
node.
Inspect a InstanceVariableOperatorWriteNode
node.
Inspect a InstanceVariableOrWriteNode
node.