Class: Knockapi::Internal::Util::ReadIOAdapter Private

Inherits:
Object
  • Object
show all
Defined in:
lib/knockapi/internal/util.rb

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.

Yield Parameters:

  • (String)


454
455
456
457
458
459
460
461
462
463
464
465
466
467
# File 'lib/knockapi/internal/util.rb', line 454

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

#closeObject

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.



396
397
398
399
400
401
402
403
404
# File 'lib/knockapi/internal/util.rb', line 396

def close
  case @stream
  in Enumerator
    Knockapi::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.



393
# File 'lib/knockapi/internal/util.rb', line 393

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.



430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
# File 'lib/knockapi/internal/util.rb', line 430

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