source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/rexml/dtd/notationdecl.rb@ 18425

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

Video extension to Greenstone

File size: 951 bytes
Line 
1require "rexml/child"
2module REXML
3 module DTD
4 class NotationDecl < Child
5 START = "<!NOTATION"
6 START_RE = /^\s*#{START}/um
7 PUBLIC = /^\s*#{START}\s+(\w[\w-]*)\s+(PUBLIC)\s+((["']).*?\4)\s*>/um
8 SYSTEM = /^\s*#{START}\s+(\w[\w-]*)\s+(SYSTEM)\s+((["']).*?\4)\s*>/um
9 def initialize src
10 super()
11 if src.match( PUBLIC )
12 md = src.match( PUBLIC, true )
13 elsif src.match( SYSTEM )
14 md = src.match( SYSTEM, true )
15 else
16 raise ParseException.new( "error parsing notation: no matching pattern", src )
17 end
18 @name = md[1]
19 @middle = md[2]
20 @rest = md[3]
21 end
22
23 def to_s
24 "<!NOTATION #@name #@middle #@rest>"
25 end
26
27 def write( output, indent )
28 indent( output, indent )
29 output << to_s
30 end
31
32 def NotationDecl.parse_source source, listener
33 md = source.match( PATTERN_RE, true )
34 thing = md[0].squeeze(" \t\n\r")
35 listener.send inspect.downcase, thing
36 end
37 end
38 end
39end
Note: See TracBrowser for help on using the repository browser.