This represents the result of a call to ::parse or ::parse_file. It contains the AST, any comments that were encounters, and any errors that were encountered.
The value that was generated by parsing. Normally this holds the AST, but it can sometimes how a list of tokens or other results passed back from the parser.
The list of comments that were encountered during parsing.
The list of magic comments that were encountered during parsing.
An optional location that represents the location of the content after the __END__ marker. This content is loaded into the DATA constant when the file being parsed is the main file being executed.
The list of errors that were generated during parsing.
The list of warnings that were generated during parsing.
# File tmp/rubies/ruby-3.3.0/lib/prism/parse_result.rb, line 387
def initialize(value, comments, magic_comments, data_loc, errors, warnings, source)
@value = value
@comments = comments
@magic_comments = magic_comments
@data_loc = data_loc
@errors = errors
@warnings = warnings
@source = source
end
Create a new parse result object with the given values.
# File tmp/rubies/ruby-3.3.0/lib/prism/parse_result/comments.rb, line 173
def attach_comments!
Comments.new(self).attach!
end
Attach the list of comments to their respective locations in the tree.
# File tmp/rubies/ruby-3.3.0/lib/prism/parse_result.rb, line 398
def deconstruct_keys(keys)
{ value: value, comments: comments, magic_comments: magic_comments, data_loc: data_loc, errors: errors, warnings: warnings }
end
Implement the hash pattern matching interface for ParseResult
.
# File tmp/rubies/ruby-3.3.0/lib/prism/parse_result.rb, line 410
def failure?
!success?
end
Returns true if there were errors during parsing and false if there were not.
# File tmp/rubies/ruby-3.3.0/lib/prism/parse_result/newlines.rb, line 60
def mark_newlines!
value.accept(Newlines.new(Array.new(1 + source.offsets.size, false)))
end
Walk the tree and mark nodes that are on a new line.
# File tmp/rubies/ruby-3.3.0/lib/prism/parse_result.rb, line 404
def success?
errors.empty?
end
Returns true if there were no errors during parsing and false if there were.