Sha256: b82e4b4310dd12db0fb8c6c089a0e89dec1b4da63e89c965b11482c05174c920

Contents?: true

Size: 893 Bytes

Versions: 11

Compression:

Stored size: 893 Bytes

Contents

module Nokogiri
  module IoCallbacks # :nodoc:
    
    class << self

      def plain_old_reader(io)
        lambda do |ctx, buffer, len|
          string = io.read(len)
          return 0 if string.nil?
          buffer.put_bytes(0, string, 0, string.length)
          string.length
        end
      end

      if defined?(FFI::IO.native_read)
        def ffi_io_native_reader(io)
          if io.is_a?(StringIO)
            plain_old_reader(io)
          else
            lambda do |ctx, buffer, len|
              rcode = FFI::IO.native_read(io, buffer, len)
              (rcode < 0) ? 0 : rcode
            end
          end
        end
        alias :reader :ffi_io_native_reader
      else
        alias :reader :plain_old_reader
      end

      def writer(io)
        lambda do |context, buffer, len|
          io.write buffer
          len
        end
      end
    end

  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
akamai_bookmarklet-0.1.2 vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/io_callbacks.rb
akamai_bookmarklet-0.1.1 vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/io_callbacks.rb
akamai_bookmarklet-0.1.0 vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/io_callbacks.rb
nokogiri-1.3.3-x86-mswin32 lib/nokogiri/ffi/io_callbacks.rb
nokogiri-1.3.3-x86-mingw32 lib/nokogiri/ffi/io_callbacks.rb
nokogiri-1.3.3-java lib/nokogiri/ffi/io_callbacks.rb
nokogiri-1.3.2-x86-mswin32 lib/nokogiri/ffi/io_callbacks.rb
nokogiri-1.3.2-x86-mingw32 lib/nokogiri/ffi/io_callbacks.rb
nokogiri-1.3.2-java lib/nokogiri/ffi/io_callbacks.rb
nokogiri-1.3.2 lib/nokogiri/ffi/io_callbacks.rb
nokogiri-1.3.3 lib/nokogiri/ffi/io_callbacks.rb