OSDN Git Service

change prefix to '/data/ruby'
[splhack/AndroidRuby.git] / lib / ruby-1.9.1-rc1 / lib / rss / rexmlparser.rb
1 require "rexml/document"
2 require "rexml/streamlistener"
3
4 /\A(\d+)\.(\d+)(?:\.\d+)+\z/ =~ REXML::Version
5 if ([$1.to_i, $2.to_i] <=> [2, 5]) < 0
6   raise LoadError, "needs REXML 2.5 or later (#{REXML::Version})"
7 end
8
9 module RSS
10   
11   class REXMLParser < BaseParser
12
13     class << self
14       def listener
15         REXMLListener
16       end
17     end
18     
19     private
20     def _parse
21       begin
22         REXML::Document.parse_stream(@rss, @listener)
23       rescue RuntimeError => e
24         raise NotWellFormedError.new{e.message}
25       rescue REXML::ParseException => e
26         context = e.context
27         line = context[0] if context
28         raise NotWellFormedError.new(line){e.message}
29       end
30     end
31     
32   end
33   
34   class REXMLListener < BaseListener
35
36     include REXML::StreamListener
37     include ListenerMixin
38
39     class << self
40       def raise_for_undefined_entity?
41         false
42       end
43     end
44     
45     def xmldecl(version, encoding, standalone)
46       super(version, encoding, standalone == "yes")
47       # Encoding is converted to UTF-8 when REXML parse XML.
48       @encoding = 'UTF-8'
49     end
50
51     alias_method(:cdata, :text)
52   end
53
54 end