4 class NotationDecl < Child
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
11 if src.match( PUBLIC )
12 md = src.match( PUBLIC, true )
13 elsif src.match( SYSTEM )
14 md = src.match( SYSTEM, true )
16 raise ParseException.new( "error parsing notation: no matching pattern", src )
24 "<!NOTATION #@name #@middle #@rest>"
27 def write( output, indent )
28 indent( output, indent )
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