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.