class REXML::Parsers::LightParser - rexml: Ruby Standard Library Documentation

# class REXML::Parsers::LightParser

### Public Class Methods

new(stream) click to toggle source

    # File rexml-3.4.0/lib/rexml/parsers/lightparser.rb, line 9
    def initialize stream
      @stream = stream
      @parser = REXML::Parsers::BaseParser.new( stream )
    end

### Public Instance Methods

add_listener( listener ) click to toggle source

    # File rexml-3.4.0/lib/rexml/parsers/lightparser.rb, line 14
    def add_listener( listener )
      @parser.add_listener( listener )
    end

parse() click to toggle source

    # File rexml-3.4.0/lib/rexml/parsers/lightparser.rb, line 23
    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

rewind() click to toggle source

    # File rexml-3.4.0/lib/rexml/parsers/lightparser.rb, line 18
    def rewind
      @stream.rewind
      @parser.stream = @stream
    end