Exception: Ast::Merge::ParseError

Inherits:
Error
  • Object
show all
Defined in:
lib/ast/merge.rb

Overview

Base class for parse errors in merge operations.

This class provides a flexible interface that can be extended by specific merge implementations. It supports:

  • An ‘errors` array for parser-specific error objects

  • An optional ‘content` attribute for the source that failed to parse

Subclasses (TemplateParseError, DestinationParseError) identify whether the error occurred in the template or destination file.

Examples:

Basic usage with errors array

raise ParseError.new(errors: [syntax_error])

With content for debugging

raise ParseError.new(errors: parse_result.errors, content: source_code)

With custom message

raise ParseError.new("Custom message", errors: [e])

Direct Known Subclasses

DestinationParseError, TemplateParseError

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message = nil, errors: [], content: nil) ⇒ ParseError

Initialize a new ParseError.

Parameters:

  • message (String, nil) (defaults to: nil)

    Custom error message (auto-generated if nil)

  • errors (Array) (defaults to: [])

    Array of parser-specific error objects

  • content (String, nil) (defaults to: nil)

    The source content that failed to parse



48
49
50
51
52
# File 'lib/ast/merge.rb', line 48

def initialize(message = nil, errors: [], content: nil)
  @errors = Array(errors)
  @content = content
  super(message || build_message)
end

Instance Attribute Details

#contentString? (readonly)

Returns The source content that failed to parse (optional).

Returns:

  • (String, nil)

    The source content that failed to parse (optional)



41
42
43
# File 'lib/ast/merge.rb', line 41

def content
  @content
end

#errorsArray (readonly)

Returns Parser-specific error objects (e.g., Prism::ParseError, RBS::BaseError).

Returns:

  • (Array)

    Parser-specific error objects (e.g., Prism::ParseError, RBS::BaseError)



38
39
40
# File 'lib/ast/merge.rb', line 38

def errors
  @errors
end