Class: Amrita::Listener

Class Amrita::Listener |
In: | lib/amrita/xml.rb
Parent: | Object

Methods

doctype new pop push result tag_end tag_start text top xmldecl

Included modules

Amrita REXML::StreamListener

Public Class methods

new()

    # File lib/amrita/xml.rb, line 38
        def initialize
          @stack = [ Null ]
        end

Public Instance methods

push(element)

    # File lib/amrita/xml.rb, line 42
        def push(element)
          @stack.unshift element
        end

pop()

    # File lib/amrita/xml.rb, line 46
        def pop
          @stack.shift
        end

top()

    # File lib/amrita/xml.rb, line 50
        def top
         @stack.first
        end

result()

    # File lib/amrita/xml.rb, line 54
        def result
          raise "can't happen @stack.size=#{@stack.size}" unless @stack.size == 1
          top
        end

tag_start(name, attrs)

    # File lib/amrita/xml.rb, line 59
        def tag_start(name, attrs)
          a = attrs.collect do |key, val|
            Attr.new(key, convert(val))
          end
          push e(name, *a)
          push Null
        end

tag_end(name)

    # File lib/amrita/xml.rb, line 67
        def tag_end(name)
          body = pop
          element = pop
          element.init_body { body }
          push(pop + element)
        end

text(text)

    # File lib/amrita/xml.rb, line 74
        def text(text)
          push(pop + TextElement.new(convert(text)))
        end

xmldecl(version, encoding, standalone)

    # File lib/amrita/xml.rb, line 78
        def xmldecl(version, encoding, standalone)
          text = ]xml version="#{version}"]
          text += ] encoding="#{encoding}"] if encoding
          s = SpecialElement.new('?', text)
          push(pop + s)
        end

doctype(name, pub_sys, long_name, uri)

    # File lib/amrita/xml.rb, line 85
        def doctype(name, pub_sys, long_name, uri)
          s = SpecialElement.new('!',
                                 ]DOCTYPE #{name} #{pub_sys} #{long_name} #{uri}])
          push(pop + s)
        end