Class: REXML::DTD::NotationDecl

Inherits:
Child show all
Defined in:
lib/rexml/dtd/notationdecl.rb

Constant Summary collapse

START =
"<!NOTATION"
START_RE =
/^\s*#{START}/um
PUBLIC =
/^\s*#{START}\s+(\w[\w-]*)\s+(PUBLIC)\s+((["']).*?\4)\s*>/um
SYSTEM =
/^\s*#{START}\s+(\w[\w-]*)\s+(SYSTEM)\s+((["']).*?\4)\s*>/um

Instance Attribute Summary

Attributes inherited from Child

#parent

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Child

#bytes, #document, #next_sibling=, #previous_sibling=, #remove, #replace_with

Methods included from Node

#each_recursive, #find_first_recursive, #indent, #index_in_parent, #next_sibling_node, #parent?, #previous_sibling_node

Constructor Details

#initialize(src) ⇒ NotationDecl



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/rexml/dtd/notationdecl.rb', line 9

def initialize src
  super()
  if src.match( PUBLIC )
    md = src.match( PUBLIC, true )
  elsif src.match( SYSTEM )
    md = src.match( SYSTEM, true )
  else
    raise ParseException.new( "error parsing notation: no matching pattern", src )
  end
  @name = md[1]
  @middle = md[2]
  @rest = md[3]
end

Class Method Details

.parse_source(source, listener) ⇒ Object



32
33
34
35
36
# File 'lib/rexml/dtd/notationdecl.rb', line 32

def NotationDecl.parse_source source, listener
  md = source.match( PATTERN_RE, true )
  thing = md[0].squeeze(" \t\n\r")
  listener.send inspect.downcase, thing
end

Instance Method Details

#to_sObject



23
24
25
# File 'lib/rexml/dtd/notationdecl.rb', line 23

def to_s
  "<!NOTATION #@name #@middle #@rest>"
end

#write(output, indent) ⇒ Object



27
28
29
30
# File 'lib/rexml/dtd/notationdecl.rb', line 27

def write( output, indent )
  indent( output, indent )
  output << to_s
end