Class: Pangea::Internal::Util::ReadIOAdapter Private

Inherits:
Object
  • Object
show all
Defined in:
lib/pangea/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.

Parameters:

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

Yield Parameters:

  • (String)


412
413
414
415
416
417
418
419
420
421
422
423
424
425
# File 'lib/pangea/internal/util.rb', line 412

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.



354
355
356
357
358
359
360
361
362
# File 'lib/pangea/internal/util.rb', line 354

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


351
# File 'lib/pangea/internal/util.rb', line 351

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)


388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
# File 'lib/pangea/internal/util.rb', line 388

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