1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* Changes to the encoding mechanism. If iconv is found, it is used first

for encoding changes.  This should be the case on all 1.8 installations.
  When it isn't found (<1.6), the native REXML encoding mechanism is used.
  This cleaned out some files, and tightened up the code a bit; and iconv
  should be faster than the pure Ruby code.
* Changed deprecated assert_not_nil to assert throughout the tests.
* Parse exceptions are a little more verbose, and extend RuntimeError.
* Bug fixes to XPathParser
* The Light API is still shifting, like the sands of the desert.
* Fixed a new Ruby 1.8.0 warning, added some speed optimizations, and
  tightened error reporting in the base parser


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ser 2003-10-10 12:54:46 +00:00
parent 662532be00
commit 7d21c237cc
23 changed files with 185 additions and 224 deletions

View file

@ -1,5 +1,5 @@
module REXML
class ParseException < Exception
class ParseException < RuntimeError
attr_accessor :source, :parser, :continued_exception
def initialize( message, source=nil, parser=nil, exception=nil )
@ -12,9 +12,9 @@ module REXML
def to_s
# Quote the original exception, if there was one
if @continued_exception
err = @continued_exception.message
err = @continued_exception.inspect
err << "\n"
err << @continued_exception.backtrace[0..3].join("\n")
err << @continued_exception.backtrace.join("\n")
err << "\n...\n"
else
err = ""
@ -24,17 +24,24 @@ module REXML
err << super
# Add contextual information
err << "\n#{@source.current_line}\nLast 80 unconsumed characters:\n#{@source.buffer[0..80].gsub(/\n/, ' ')}\n" if @source
err << "\nContext:\n#{@parser.context}" if @parser
if @source
err << "\nLine: #{line}\n"
err << "Position: #{position}\n"
err << "Last 80 unconsumed characters:\n"
err << @source.buffer[0..80].gsub(/\n/, ' ')
err << "\n"
err << @source.buffer[0..80].unpack("U*").inspect
end
err
end
def position
@source.current_line[0] if @source
@source.current_line[0] if @source and @source.current_line
end
def line
@source.current_line[2] if @source
@source.current_line[2] if @source and @source.current_line
end
def context