123456789_123456789_123456789_123456789_123456789_

Class: Prism::ParseResult

Relationships & Source Files
Namespace Children
Classes:
Inherits: Object
Defined in: lib/prism/parse_result.rb,
lib/prism/parse_result/comments.rb,
lib/prism/parse_result/newlines.rb

Overview

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.

Class Method Summary

Instance Attribute Summary

  • #comments readonly

    The list of comments that were encountered during parsing.

  • #data_loc readonly

    An optional location that represents the location of the content after the __END__ marker.

  • #errors readonly

    The list of errors that were generated during parsing.

  • #failure? ⇒ Boolean readonly

    Returns true if there were errors during parsing and false if there were not.

  • #magic_comments readonly

    The list of magic comments that were encountered during parsing.

  • #source readonly

    A Source instance that represents the source code that was parsed.

  • #success? ⇒ Boolean readonly

    Returns true if there were no errors during parsing and false if there were.

  • #value readonly

    The value that was generated by parsing.

  • #warnings readonly

    The list of warnings that were generated during parsing.

Instance Method Summary

Constructor Details

.new(value, comments, magic_comments, data_loc, errors, warnings, source) ⇒ ParseResult

Create a new parse result object with the given values.

[ GitHub ]

  
# File '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

Instance Attribute Details

#comments (readonly)

The list of comments that were encountered during parsing.

[ GitHub ]

  
# File 'lib/prism/parse_result.rb', line 367

attr_reader :comments

#data_loc (readonly)

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.

[ GitHub ]

  
# File 'lib/prism/parse_result.rb', line 375

attr_reader :data_loc

#errors (readonly)

The list of errors that were generated during parsing.

[ GitHub ]

  
# File 'lib/prism/parse_result.rb', line 378

attr_reader :errors

#failure?Boolean (readonly)

Returns true if there were errors during parsing and false if there were not.

[ GitHub ]

  
# File 'lib/prism/parse_result.rb', line 410

def failure?
  !success?
end

#magic_comments (readonly)

The list of magic comments that were encountered during parsing.

[ GitHub ]

  
# File 'lib/prism/parse_result.rb', line 370

attr_reader :magic_comments

#source (readonly)

A Source instance that represents the source code that was parsed.

[ GitHub ]

  
# File 'lib/prism/parse_result.rb', line 384

attr_reader :source

#success?Boolean (readonly)

Returns true if there were no errors during parsing and false if there were.

[ GitHub ]

  
# File 'lib/prism/parse_result.rb', line 404

def success?
  errors.empty?
end

#value (readonly)

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.

[ GitHub ]

  
# File 'lib/prism/parse_result.rb', line 364

attr_reader :value

#warnings (readonly)

The list of warnings that were generated during parsing.

[ GitHub ]

  
# File 'lib/prism/parse_result.rb', line 381

attr_reader :warnings

Instance Method Details

#attach_comments!

Attach the list of comments to their respective locations in the tree.

[ GitHub ]

  
# File 'lib/prism/parse_result/comments.rb', line 173

def attach_comments!
  Comments.new(self).attach!
end

#deconstruct_keys(keys)

Implement the hash pattern matching interface for ParseResult.

[ GitHub ]

  
# File '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

#mark_newlines!

Walk the tree and mark nodes that are on a new line.

[ GitHub ]

  
# File 'lib/prism/parse_result/newlines.rb', line 60

def mark_newlines!
  value.accept(Newlines.new(Array.new(1 + source.offsets.size, false)))
end