module LightIO::Module::IO

Public Class Methods

convert_to_io(io) click to toggle source

helper methods

# File lib/lightio/module/io.rb, line 11
def convert_to_io(io)
  unless io.respond_to?(:to_io)
    raise TypeError, "no implicit conversion of #{io.class} into IO"
  end
  to_io = io.is_a?(LightIO::Library::IO) ? io : io.to_io
  unless to_io.is_a?(LightIO::Library::IO)
    raise TypeError, "can't convert #{io.class} to IO (#{io.class}#to_io gives #{to_io.class})" unless to_io.is_a?(::IO)

    # try wrap raw io instead of raise error
    wrapped_io = to_io.instance_variable_get(:@_lightio_wrapped_io)
    unless wrapped_io
      wrapped_io = LightIO::Library::IO._wrap(to_io)
      to_io.instance_variable_set(:@_lightio_wrapped_io, wrapped_io)
    end
    to_io = wrapped_io
    # raise TypeError, "can't process raw IO, use LightIO::IO._wrap(obj) to wrap it"
  end
  to_io
end
get_io_watcher(io) click to toggle source
# File lib/lightio/module/io.rb, line 31
def get_io_watcher(io)
  unless io.is_a?(LightIO::Library::IO)
    io = convert_to_io(io)
  end
  io.__send__(:io_watcher)
end