Module: LightIO::Module::IO

Includes:
Base
Defined in:
lib/lightio/module/io.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Methods included from Base

find_library_class

Class Method Details

.convert_to_io(io) ⇒ Object

helper methods



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 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) ⇒ Object



31
32
33
34
35
36
# 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