Class: REXML::Parsers::LightParser

Inherits:
Object
  • Object
show all
Defined in:
lib/rexml/parsers/lightparser.rb

Instance Method Summary (collapse)

Constructor Details

- (LightParser) initialize(stream)

A new instance of LightParser



8
9
10
11
# File 'lib/rexml/parsers/lightparser.rb', line 8

def initialize stream
  @stream = stream
  @parser = REXML::Parsers::BaseParser.new( stream )
end

Instance Method Details

- (Object) add_listener(listener)



13
14
15
# File 'lib/rexml/parsers/lightparser.rb', line 13

def add_listener( listener )
  @parser.add_listener( listener )
end

- (Object) parse



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/rexml/parsers/lightparser.rb', line 22

def parse
  root = context = [ :document ]
  while true
    event = @parser.pull
    case event[0]
    when :end_document
      break
    when :start_element, :start_doctype
      new_node = event
      context << new_node
      new_node[1,0] = [context]
      context = new_node
    when :end_element, :end_doctype
      context = context[1]
    else
      new_node = event
      context << new_node
      new_node[1,0] = [context]
    end
  end
  root
end

- (Object) rewind



17
18
19
20
# File 'lib/rexml/parsers/lightparser.rb', line 17

def rewind
  @stream.rewind
  @parser.stream = @stream
end