lib/rosette/core/errors.rb
# encoding: UTF-8
module Rosette
module Core
# Represents a generic syntax error that probably occurred when attempting
# to parse a bit of source code or other well-defined text format.
#
# @!attribute [r] message
# @return [String] the error message.
# @!attribute [r] original_exception
# @return [Exception] the original exception, probably from a parser of
# some kind.
# @!attribute [r] language
# @return [Symbol] the language that the text the parser attempted to
# parse was in when this error was generated.
class SyntaxError < StandardError
attr_reader :message, :original_exception, :language
# Creates a new syntax error object.
#
# @param [String] msg The error message text.
# @param [Exception] original_exception The original error from the
# parser or some such.
# @param [Symbol] language The source code language.
def initialize(msg, original_exception, language)
super(msg)
@message = msg
@original_exception = original_exception
@language = language
end
# A string representation of this error which combines both the original
# message as well as the language.
#
# @return [String]
def message
"#{@message} (#{language})"
end
alias :to_s :message
end
# Represents a generic syntax error generated by one of Rosette's
# extractors. Since extractors parse source code and other
# well-defined text formats, there's always the possibility that these formats
# will contain syntax errors.
#
# @!attribute [r] original_exception
# @return [Exception] the original error from the parser or some such.
# @!attribute [r] language
# @return [Symbol] the source code language.
# @!attribute [r] file
# @return [String] the file that was being parsed when the error was
# generated.
# @!attribute [r] commit_id
# @return [String] the commit id that contained the file that was being
# parsed when the error was generated.
class ExtractionSyntaxError < StandardError
attr_reader :original_exception, :language, :file, :commit_id
# Creates a new syntax error object.
#
# @param [String] msg The error message text.
# @param [Exception] original_exception The original error from the
# parser or some such.
# @param [Symbol] language The source code language.
# @param [String] file The file that was being parsed when the error
# was generated.
# @param [String] commit_id The commit id that contained the file that
# was being parsed when the error was generated.
def initialize(msg, original_exception, language, file, commit_id)
super(msg)
@message = msg
@original_exception = original_exception
@language = language
@file = file
@commit_id = commit_id
end
# A string representation of this error which includes the original
# message, the source language, the file, and the commit id.
#
# @return [String]
def message
"#{@message}: #{original_exception.message} (#{language}) in #{file} at #{commit_id}"
end
alias :to_s :message
end
end
end