123456789_123456789_123456789_123456789_123456789_

Exception: REXML::ParseException

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, RuntimeError
Instance Chain:
self, RuntimeError
Inherits: RuntimeError
  • ::Object
Defined in: lib/rexml/parseexception.rb

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(message, source = nil, parser = nil, exception = nil) ⇒ ParseException

[ GitHub ]

  
# 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

Instance Attribute Details

#continued_exception (rw)

[ GitHub ]

  
# File 'lib/rexml/parseexception.rb', line 4

attr_accessor :source, :parser, :continued_exception

#parser (rw)

[ GitHub ]

  
# File 'lib/rexml/parseexception.rb', line 4

attr_accessor :source, :parser, :continued_exception

#source (rw)

[ GitHub ]

  
# File 'lib/rexml/parseexception.rb', line 4

attr_accessor :source, :parser, :continued_exception

Instance Method Details

#context

[ GitHub ]

  
# File 'lib/rexml/parseexception.rb', line 48

def context
  @source.current_line
end

#line

[ GitHub ]

  
# File 'lib/rexml/parseexception.rb', line 43

def line
  @source.current_line[2] if @source and defined? @source.current_line and
  @source.current_line
end

#position

[ GitHub ]

  
# File 'lib/rexml/parseexception.rb', line 38

def position
  @source.current_line[0] if @source and defined? @source.current_line and
  @source.current_line
end

#to_s

[ GitHub ]

  
# 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 << @source.buffer[0..80].force_encoding("ASCII-8BIT").gsub(/\n/, ' ')
  end

  err
end