class REXML::ParseException

Attributes

continued_exception[RW]
parser[RW]
source[RW]

Public Class Methods

new( message, source=nil, parser=nil, exception=nil ) click to toggle source
Calls superclass method
# File lib/rexml/parseexception.rb, line 6
def initialize( message, source=nil, parser=nil, exception=nil )
  super(message)
  @source = source
  @parser = parser
  @continued_exception = exception
end

Public Instance Methods

context() click to toggle source
# File lib/rexml/parseexception.rb, line 49
def context
  @source.current_line
end
line() click to toggle source
# File lib/rexml/parseexception.rb, line 44
def line
  @source.current_line[2] if @source and defined? @source.current_line and
  @source.current_line
end
position() click to toggle source
# File lib/rexml/parseexception.rb, line 39
def position
  @source.current_line[0] if @source and defined? @source.current_line and
  @source.current_line
end
to_s() click to toggle source
Calls superclass method
# File lib/rexml/parseexception.rb, line 13
def to_s
  # Quote the original exception, if there was one
  if @continued_exception
    err = @continued_exception.inspect
    err << "\n"
    err << @continued_exception.backtrace.join("\n")
    err << "\n...\n"
  else
    err = ""
  end

  # Get the stack trace and error message
  err << super

  # Add contextual information
  if @source
    err << "\nLine: #{line}\n"
    err << "Position: #{position}\n"
    err << "Last 80 unconsumed characters:\n"
    err.force_encoding("ASCII-8BIT")
    err << @source.buffer[0..80].force_encoding("ASCII-8BIT").gsub(/\n/, ' ')
  end

  err
end