Sha256: e7dfb532fd75ec00e516cf116f9a6965840707dcb3fb2a32d1228a466a5c64c5

Contents?: true

Size: 1.8 KB

Versions: 29

Compression:

Stored size: 1.8 KB

Contents

# :stopdoc:
module Nokogiri
  module XML
    module SAX
      class ParserContext
        attr_accessor :cstruct
        attr_accessor :reader_callback

        def self.memory data
          raise(ArgumentError, 'data cannot be nil') if data.nil?
          raise('data cannot be empty') if data.length == 0
          ctx = LibXML::XmlParserContext.new(
            LibXML.xmlCreateMemoryParserCtxt data, data.length
          )
          pc = allocate
          pc.cstruct = ctx
          pc
        end

        def self.io io, encoding
          reader_callback = IoCallbacks.reader(io) # keep a reference to prevent it from being GC'd
          sax_ctx = LibXML.xmlCreateIOParserCtxt(
            nil,
            nil,
            reader_callback,
            nil,
            nil,
            encoding
          )
          pc = allocate
          pc.cstruct = LibXML::XmlParserContext.new sax_ctx
          pc.reader_callback = reader_callback
          pc
        end

        def self.file filename
          ctx = LibXML.xmlCreateFileParserCtxt filename
          pc = allocate
          pc.cstruct = LibXML::XmlParserContext.new ctx
          pc
        end

        def parse_with sax_handler, type = :xml
          raise ArgumentError unless XML::SAX::Parser === sax_handler
          sax = sax_handler.cstruct
          cstruct[:sax] = sax

          sax_handler.instance_variable_set(:@ctxt, cstruct)

          LibXML.send(:"#{type}ParseDocument", cstruct)

          cstruct[:sax] = nil
          LibXML.xmlFreeDoc cstruct[:myDoc] unless cstruct[:myDoc].null?
        end

        def replace_entities=(value)
          self.cstruct[:replaceEntities] = value ? 1 : 0
        end

        def replace_entities
          self.cstruct[:replaceEntities] == 0 ? false : true
        end
      end
    end
  end
end
# :startdoc:

Version data entries

29 entries across 29 versions & 7 rubygems

Version Path
nokogiri-1.4.3.1-java lib/nokogiri/ffi/xml/sax/parser_context.rb
nokogiri-1.4.3.1-x86-mswin32 lib/nokogiri/ffi/xml/sax/parser_context.rb
nokogiri-1.4.3.1-x86-mingw32 lib/nokogiri/ffi/xml/sax/parser_context.rb
nokogiri-1.4.3.1 lib/nokogiri/ffi/xml/sax/parser_context.rb
nokogiri-1.4.3-java lib/nokogiri/ffi/xml/sax/parser_context.rb
nokogiri-1.4.3-x86-mswin32 lib/nokogiri/ffi/xml/sax/parser_context.rb
nokogiri-1.4.3-x86-mingw32 lib/nokogiri/ffi/xml/sax/parser_context.rb
nokogiri-1.4.3 lib/nokogiri/ffi/xml/sax/parser_context.rb
glebm-nokogiri-1.4.2.1 lib/nokogiri/ffi/xml/sax/parser_context.rb
nokogiri-1.4.2.1-x86-mswin32 lib/nokogiri/ffi/xml/sax/parser_context.rb
nokogiri-1.4.2.1-x86-mingw32 lib/nokogiri/ffi/xml/sax/parser_context.rb
nokogiri-1.4.2-java lib/nokogiri/ffi/xml/sax/parser_context.rb
nokogiri-1.4.2 lib/nokogiri/ffi/xml/sax/parser_context.rb
rubyjedi-nokogiri_java-1.4.0.20100513161003-java lib/nokogiri/ffi/xml/sax/parser_context.rb
jwagener-nokogiri-1.4.1 lib/nokogiri/ffi/xml/sax/parser_context.rb
revo-nokogiri-1.4.1-java lib/nokogiri/ffi/xml/sax/parser_context.rb
revo-nokogiri-1.4.0.3-java lib/nokogiri/ffi/xml/sax/parser_context.rb
revo-nokogiri-1.4.0-java lib/nokogiri/ffi/xml/sax/parser_context.rb
revo-nokogiri-1.4.0.20100202165440-java lib/nokogiri/ffi/xml/sax/parser_context.rb
nokogiri-1.4.1-x86-mswin32 lib/nokogiri/ffi/xml/sax/parser_context.rb