source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/rss/rexmlparser.rb@ 18425

Last change on this file since 18425 was 18425, checked in by davidb, 15 years ago

Video extension to Greenstone

File size: 1.1 KB
Line 
1require "rexml/document"
2require "rexml/streamlistener"
3
4/\A(\d+)\.(\d+)(?:\.\d+)+\z/ =~ REXML::Version
5if ([$1.to_i, $2.to_i] <=> [2, 5]) < 0
6 raise LoadError, "needs REXML 2.5 or later (#{REXML::Version})"
7end
8
9module 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
54end
Note: See TracBrowser for help on using the repository browser.