class YARP::ParseResult::Newlines
The :line tracepoint event gets fired whenever the Ruby VM encounters an expression on a new line. The types of expressions that can trigger this event are:
-
if statements
-
unless statements
-
nodes that are children of statements lists
In order to keep track of the newlines, we have a list of offsets that come back from the parser. We assign these offsets to the first nodes that we find in the tree that are on those lines.
Note that the logic in this file should be kept in sync with the Java MarkNewlinesVisitor, since that visitor is responsible for marking the newlines for JRuby/TruffleRuby.
Public Class Methods
new(newline_marked)
click to toggle source
# File yarp/parse_result/newlines.rb, line 21 def initialize(newline_marked) @newline_marked = newline_marked end
Public Instance Methods
visit_block_node(node)
click to toggle source
Calls superclass method
# File yarp/parse_result/newlines.rb, line 25 def visit_block_node(node) old_newline_marked = @newline_marked @newline_marked = Array.new(old_newline_marked.size, false) begin super(node) ensure @newline_marked = old_newline_marked end end
Also aliased as: visit_lambda_node
visit_if_node(node)
click to toggle source
Calls superclass method
# File yarp/parse_result/newlines.rb, line 38 def visit_if_node(node) node.set_newline_flag(@newline_marked) super(node) end
Also aliased as: visit_unless_node
visit_statements_node(node)
click to toggle source
Calls superclass method
# File yarp/parse_result/newlines.rb, line 45 def visit_statements_node(node) node.body.each do |child| child.set_newline_flag(@newline_marked) end super(node) end