flowplayer flash flv no longer work, move to mp4
[booh] / lib / booh / rexml / parseexception.rb
1 module REXML
2   class ParseException < RuntimeError
3     attr_accessor :source, :parser, :continued_exception
4
5     def initialize( message, source=nil, parser=nil, exception=nil )
6       super(message)
7       @source = source
8       @parser = parser
9       @continued_exception = exception
10     end
11
12     def to_s
13       # Quote the original exception, if there was one
14       if @continued_exception
15         err = @continued_exception.inspect
16         err << "\n"
17         err << @continued_exception.backtrace.join("\n")
18         err << "\n...\n"
19       else
20         err = ""
21       end
22
23       # Get the stack trace and error message
24       err << super
25
26       # Add contextual information
27       if @source
28         err << "\nLine: #{line}\n"
29         err << "Position: #{position}\n"
30         err << "Last 80 unconsumed characters:\n"
31         err << @source.buffer[0..80].gsub(/\n/, ' ')
32       end
33       
34       err
35     end
36
37     def position
38       @source.current_line[0] if @source and defined? @source.current_line and
39       @source.current_line
40     end
41
42     def line
43       @source.current_line[2] if @source and defined? @source.current_line and 
44       @source.current_line
45     end
46
47     def context
48       @source.current_line
49     end
50   end  
51 end