Sha256: c074d8c98ad1f81de2c487f323f78aaa5da41eafa521421e7b64ae9e6fd85486

Contents?: true

Size: 1.01 KB

Versions: 5

Compression:

Stored size: 1.01 KB

Contents

##
# Midori Extension of File reading and writing
class Midori::File
  # Init File object
  # @param [Array] args same args like File.new
  def initialize(*args)
    @file = File.new(*args)
  end

  # read file
  # @return [String] string readed
  def read
    await(Promise.new do |resolve|
      data = ''
      EventLoop.register(@file, :r) do
        if @file.eof?
          EventLoop.deregister(@file)
          resolve.call(data)
        else
          data << @file.read_nonblock(16384)
        end
      end
    end)
  end

  # write file
  # @param [String] data string to be written
  def write(data)
    await(Promise.new do |resolve|
      written = 0
      EventLoop.register(@file, :w) do
        written += @file.write_nonblock(data[written..-1])
        if written == data.size
          EventLoop.deregister(@file)
          resolve.call(written)
        end
      end
    end)
  end

  # raw file object
  # @return [File] file
  def raw
    @file
  end

  # Close the file
  def close
    @file.close
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
em-midori-0.3.0 lib/midori/extension/file.rb
em-midori-0.2.4 lib/midori/extension/file.rb
em-midori-0.2.3 lib/midori/extension/file.rb
em-midori-0.2.2 lib/midori/extension/file.rb
em-midori-0.2.1 lib/midori/extension/file.rb