# File lib/amrita/xml.rb, line 38def initialize
@stack = [ Null ]
end
Public Instance methods
push(element)
# File lib/amrita/xml.rb, line 42def push(element)
@stack.unshift element
end
pop()
# File lib/amrita/xml.rb, line 46def pop
@stack.shift
end
top()
# File lib/amrita/xml.rb, line 50def top
@stack.first
end
result()
# File lib/amrita/xml.rb, line 54def 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 59def 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 67def tag_end(name)
body = pop
element = pop
element.init_body { body }
push(pop + element)
end
text(text)
# File lib/amrita/xml.rb, line 74def text(text)
push(pop + TextElement.new(convert(text)))
end
xmldecl(version, encoding, standalone)
# File lib/amrita/xml.rb, line 78def 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 85def doctype(name, pub_sys, long_name, uri)
s = SpecialElement.new('!',
]DOCTYPE #{name} #{pub_sys} #{long_name} #{uri}])
push(pop + s)
end