Class: Stigg::Internal::Util::ReadIOAdapter Private

Inherits:
Object
  • Object
show all
Defined in:
lib/stigg/internal/util.rb,
sig/stigg/internal/util.rbs

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

An adapter that satisfies the IO interface required by ::IO.copy_stream

Instance Method Summary collapse

Constructor Details

#initialize(src, &blk) {|| ... } ⇒ ReadIOAdapter

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of ReadIOAdapter.

Parameters:

  • src (String, Pathname, StringIO, Enumerable<String>)
  • blk (Proc)

Yield Parameters:

  • (String)


468
469
470
471
472
473
474
475
476
477
478
479
480
481
# File 'lib/stigg/internal/util.rb', line 468

def initialize(src, &blk)
  @stream =
    case src
    in String
      StringIO.new(src)
    in Pathname
      @closing = true
      src.open(binmode: true)
    else
      src
    end
  @buf = String.new
  @blk = blk
end

Instance Method Details

#closevoid

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This method returns an undefined value.



410
411
412
413
414
415
416
417
418
# File 'lib/stigg/internal/util.rb', line 410

def close
  case @stream
  in Enumerator
    Stigg::Internal::Util.close_fused!(@stream)
  in IO if close?
    @stream.close
  else
  end
end

#close?Boolean?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean, nil)


407
# File 'lib/stigg/internal/util.rb', line 407

def close? = @closing

#read(max_len = nil, out_string = nil) ⇒ String?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • max_len (Integer, nil) (defaults to: nil)
  • out_string (String, nil) (defaults to: nil)

Returns:

  • (String, nil)


444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
# File 'lib/stigg/internal/util.rb', line 444

def read(max_len = nil, out_string = nil)
  case @stream
  in nil
    nil
  in IO | StringIO
    @stream.read(max_len, out_string)
  in Enumerator
    read = read_enum(max_len)
    case out_string
    in String
      out_string.replace(read)
    in nil
      read
    end
  end
    .tap(&@blk)
end