Sha256: bdfec7c764a67fa75d52c7e29a89182a22533f9471cc51a294c5d952b1b7f35d
Contents?: true
Size: 1.21 KB
Versions: 2
Compression:
Stored size: 1.21 KB
Contents
require 'rexml/parsers/streamparser' require 'rexml/parsers/baseparser' module REXML module Parsers class UltraLightParser def initialize stream @stream = stream @parser = REXML::Parsers::BaseParser.new( stream ) end def add_listener( listener ) @parser.add_listener( listener ) end def rewind @stream.rewind @parser.stream = @stream end def parse root = context = [] while true event = @parser.pull case event[0] when :end_document break when :end_doctype context = context[1] when :start_element, :doctype context << event event[1,0] = [context] context = event when :end_element context = context[1] else context << event end end root end end # An element is an array. The array contains: # 0 The parent element # 1 The tag name # 2 A hash of attributes # 3..-1 The child elements # An element is an array of size > 3 # Text is a String # PIs are [ :processing_instruction, target, data ] # Comments are [ :comment, data ] # DocTypes are DocType structs # The root is an array with XMLDecls, Text, DocType, Array, Text end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
rubysl-rexml-1.0.0 | lib/rexml/parsers/ultralightparser.rb |
ruby_on_ruby-0.0.1 | vendor/javascripts/emscripted-ruby/lib/rexml/parsers/ultralightparser.rb |