Class REXML::Parsers::StreamParser
In: rexml/parsers/streamparser.rb
Parent: Object

Methods

add_listener   new   parse  

Public Class methods

[Source]

# File rexml/parsers/streamparser.rb, line 4
                        def initialize source, listener
                                @listener = listener
                                @parser = BaseParser.new( source )
                        end

Public Instance methods

[Source]

# File rexml/parsers/streamparser.rb, line 9
      def add_listener( listener )
        @parser.add_listener( listener )
      end

[Source]

# File rexml/parsers/streamparser.rb, line 13
                        def parse
                                # entity string
                                while true
                                        event = @parser.pull
                                        case event[0]
                                        when :end_document
                                                return
                                        when :start_element
                                                attrs = event[2].each do |n, v|
                                                        event[2][n] = @parser.unnormalize( v )
                                                end
                                                @listener.tag_start( event[1], attrs )
                                        when :end_element
                                                @listener.tag_end( event[1] )
                                        when :text
                                                normalized = @parser.unnormalize( event[1] )
                                                @listener.text( normalized )
                                        when :processing_instruction
                                                @listener.instruction( *event[1,2] )
          when :start_doctype
            @listener.doctype( *event[1..-1] )
                                        when :comment, :attlistdecl, :notationdecl, :elementdecl, 
            :entitydecl, :cdata, :xmldecl, :attlistdecl
                                                @listener.send( event[0].to_s, *event[1..-1] )
                                        end
                                end
                        end

[Validate]