Class: TreeHaver::Backends::Prism::Tree Private

Inherits:
TreeHaver::Base::Tree show all
Defined in:
lib/tree_haver/backends/prism.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Prism tree wrapper

Wraps a Prism::ParseResult to provide tree-sitter-compatible API.

Instance Attribute Summary collapse

Attributes inherited from TreeHaver::Base::Tree

#inner_tree, #lines, #source

Instance Method Summary collapse

Methods inherited from TreeHaver::Base::Tree

#edit, #has_error?, #inspect

Constructor Details

#initialize(parse_result, source) ⇒ Tree

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Tree.



230
231
232
233
# File 'lib/tree_haver/backends/prism.rb', line 230

def initialize(parse_result, source)
  super(parse_result, source: source)
  @parse_result = parse_result
end

Instance Attribute Details

#parse_result::Prism::ParseResult (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the underlying Prism parse result.

Returns:

  • (::Prism::ParseResult)

    the underlying Prism parse result



228
229
230
# File 'lib/tree_haver/backends/prism.rb', line 228

def parse_result
  @parse_result
end

Instance Method Details

#commentsArray<::Prism::Comment>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Get comments from the parse

Returns:

  • (Array<::Prism::Comment>)


266
267
268
# File 'lib/tree_haver/backends/prism.rb', line 266

def comments
  @parse_result.comments
end

#data_loc::Prism::Location?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Get data locations (__END__ section)

Returns:

  • (::Prism::Location, nil)


280
281
282
# File 'lib/tree_haver/backends/prism.rb', line 280

def data_loc
  @parse_result.data_loc
end

#errorsArray<::Prism::ParseError>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Get parse errors

Returns:

  • (Array<::Prism::ParseError>)


252
253
254
# File 'lib/tree_haver/backends/prism.rb', line 252

def errors
  @parse_result.errors
end

#has_errors?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Check if the parse had errors

Returns:

  • (Boolean)


245
246
247
# File 'lib/tree_haver/backends/prism.rb', line 245

def has_errors?
  @parse_result.failure?
end

#magic_commentsArray<::Prism::MagicComment>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Get magic comments (e.g., frozen_string_literal)

Returns:

  • (Array<::Prism::MagicComment>)


273
274
275
# File 'lib/tree_haver/backends/prism.rb', line 273

def magic_comments
  @parse_result.magic_comments
end

#root_nodeNode

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Get the root node of the parse tree

Returns:

  • (Node)

    wrapped root node



238
239
240
# File 'lib/tree_haver/backends/prism.rb', line 238

def root_node
  Node.new(@parse_result.value, source)
end

#warningsArray<::Prism::ParseWarning>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Get parse warnings

Returns:

  • (Array<::Prism::ParseWarning>)


259
260
261
# File 'lib/tree_haver/backends/prism.rb', line 259

def warnings
  @parse_result.warnings
end