Sha256: 4e75f6cce590696bca4dafeabd02445b472e0a1a3a8334c99015c35a773dee3d

Contents?: true

Size: 1.43 KB

Versions: 22

Compression:

Stored size: 1.43 KB

Contents

ARGF = Object.new

class << ARGF
  include Enumerable

  def inspect
    'ARGF'
  end

  def argv
    ARGV
  end

  def file
    fn = filename
    if fn == '-'
      $stdin
    else
      @file ||= File.open(fn, 'r')
    end
  end

  def filename
    return @filename if @filename
    if argv == ['-']
      '-'
    elsif argv == []
      @last_filename || '-'
    else
      @file = nil
      @filename = @last_filename = argv.shift
    end
  end

  def close
    file.close
    @filename = nil
    self
  end

  def closed?
    file.closed?
  end

  def each(*args, &block)
    return enum_for(:each) unless block_given?

    while (l = gets(*args))
      yield(l)
    end
  end

  def gets(*args)
    s = file.gets(*args)
    if s.nil?
      close
      s = file.gets(*args)
    end
    @lineno += 1 if s
    s
  end

  def read(len = nil)
    buf = ''
    loop do
      r = file.read(len)
      if r
        buf += r
        len -= r.length
      end
      file.close
      break if len && len > 0 && @filename
    end
  end

  def readlines(*args)
    each(*args).to_a
  end

  attr_accessor :lineno

  def rewind
    @lineno = 1
    f = file
    begin
      f.rewind
    rescue
      nil
    end
    0
  end

  def fileno
    return 0 if !@filename && @last_filename
    file.fileno
  end

  def eof?
    file.eof?
  end

  alias each_line each
  alias eof eof?
  alias path filename
  alias skip close
  alias to_i fileno
  alias to_io file
end

ARGF.lineno = 1

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
opal-1.8.3.rc1 stdlib/nodejs/argf.rb
opal-1.8.2 stdlib/nodejs/argf.rb
opal-1.8.1 stdlib/nodejs/argf.rb
opal-1.8.0 stdlib/nodejs/argf.rb
opal-1.8.0.beta1 stdlib/nodejs/argf.rb
opal-1.7.4 stdlib/nodejs/argf.rb
opal-1.8.0.alpha1 stdlib/nodejs/argf.rb
opal-1.7.3 stdlib/nodejs/argf.rb
opal-1.7.2 stdlib/nodejs/argf.rb
opal-1.7.1 stdlib/nodejs/argf.rb
opal-1.7.0 stdlib/nodejs/argf.rb
opal-1.7.0.rc1 stdlib/nodejs/argf.rb
opal-1.6.1 stdlib/nodejs/argf.rb
opal-1.6.0 stdlib/nodejs/argf.rb
opal-1.6.0.rc1 stdlib/nodejs/argf.rb
opal-1.6.0.alpha1 stdlib/nodejs/argf.rb
opal-1.5.1 stdlib/nodejs/argf.rb
opal-1.5.0 stdlib/nodejs/argf.rb
opal-1.5.0.rc1 stdlib/nodejs/argf.rb
opal-1.4.1 stdlib/nodejs/argf.rb