Sha256: 1d68f0f5ac79cac395544473f3db72fd8a838ca73335fb18e9027ae8bff0e0e3

Contents?: true

Size: 1.92 KB

Versions: 7

Compression:

Stored size: 1.92 KB

Contents

# XSD4R - XMLParser XML parser library.
# Copyright (C) 2000-2007  NAKAMURA, Hiroshi <nahi@ruby-lang.org>.

# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
# redistribute it and/or modify it under the same terms of Ruby's license;
# either the dual license version in 2003, or any later version.


require 'xsd/xmlparser'
require 'xml/libxml'


module XSD
module XMLParser


class LibXMLParser < XSD::XMLParser::Parser
  include XML::SaxParser::Callbacks

  def do_parse(string_or_readable)
    if string_or_readable.respond_to?(:read)
      string = string_or_readable.read
    else
      string = string_or_readable
    end
    # XMLParser passes a String in utf-8.
    @charset = 'utf-8'
    @parser = XML::SaxParser.new
    @parser.callbacks = self
    @parser.string = string
    @parser.parse
  end

  ENTITY_REF_MAP = {
    'lt' => '<',
    'gt' => '>',
    'amp' => '&',
    'quot' => '"',
    'apos' => '\''
  }

  #def on_internal_subset(name, external_id, system_id)
  #  nil
  #end

  #def on_is_standalone()
  #  nil
  #end

  #def on_has_internal_subset()
  #  nil
  #end

  #def on_has_external_subset()
  #  nil
  #end

  #def on_start_document()
  #  nil
  #end

  #def on_end_document()
  #  nil
  #end

  def on_start_element(name, attr_hash)
    start_element(name, attr_hash)
  end

  def on_end_element(name)
    end_element(name)
  end

  def on_reference(name)
    characters(ENTITY_REF_MAP[name])
  end

  def on_characters(chars)
    characters(chars)
  end

  #def on_processing_instruction(target, data)
  #  nil
  #end

  #def on_comment(msg)
  #  nil
  #end

  def on_parser_warning(msg)
    warn(msg)
  end

  def on_parser_error(msg)
    raise ParseError.new(msg)
  end

  def on_parser_fatal_error(msg)
    raise ParseError.new(msg)
  end

  def on_cdata_block(cdata)
    characters(cdata)
  end

  def on_external_subset(name, external_id, system_id)
    nil
  end

  add_factory(self)
end


end
end

Version data entries

7 entries across 7 versions & 6 rubygems

Version Path
soap2r-1.5.8 lib/xsd/xmlparser/libxmlparser.rb
teo-soap4r-1.5.9b lib/xsd/xmlparser/libxmlparser.rb
soap4r-r19-1.5.9 lib/xsd/xmlparser/libxmlparser.rb
soap4r-sgonyea-1.6.0 lib/xsd/xmlparser/libxmlparser.rb
soap4r-straightjacket-1.5.9 lib/xsd/xmlparser/libxmlparser.rb
soap4r-straightjacket-1.5.8 lib/xsd/xmlparser/libxmlparser.rb
rubyjedi-soap4r-1.5.8.20100616125722 lib/xsd/xmlparser/libxmlparser.rb