In Files

  • rexml/parseexception.rb

Parent

Class/Module Index [+]

Quicksearch

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
 
               # File rexml/parseexception.rb, line 5
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 rexml/parseexception.rb, line 47
def context
  @source.current_line
end
            
line() click to toggle source
 
               # File rexml/parseexception.rb, line 42
def line
  @source.current_line[2] if @source and defined? @source.current_line and
  @source.current_line
end
            
position() click to toggle source
 
               # File rexml/parseexception.rb, line 37
def position
  @source.current_line[0] if @source and defined? @source.current_line and
  @source.current_line
end
            
to_s() click to toggle source
 
               # File rexml/parseexception.rb, line 12
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 << @source.buffer[0..80].force_encoding("ASCII-8BIT").gsub(/\n/, ' ')
  end

  err
end