Sha256: 37775dd5132330eb3187bc8ec45b11bcd61a69b9cc65250c0c5b657c2e987bf4

Contents?: true

Size: 618 Bytes

Versions: 16

Compression:

Stored size: 618 Bytes

Contents

module Pager
  def page
    return if RUBY_PLATFORM =~ /win32/
    return unless STDOUT.tty?

    read, write = IO.pipe

    unless Kernel.fork # Child process
      STDOUT.reopen(write)
      STDERR.reopen(write) if STDERR.tty?
      read.close
      write.close
      return
    end

    # Parent process, become pager
    STDIN.reopen(read)
    read.close
    write.close

    ENV['LESS'] = 'FSRX' unless ENV['LESS']

    Kernel.select [STDIN] # Wait until we have input before we start the pager
    pager = ENV['PAGER'] || 'less'
    exec pager rescue exec "/bin/sh", "-c", pager
  rescue StandardError
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
usaidwat-1.6.1 lib/usaidwat/pager.rb
usaidwat-1.6.0 lib/usaidwat/pager.rb
usaidwat-1.5.1 lib/usaidwat/pager.rb
usaidwat-1.5.0 lib/usaidwat/pager.rb
usaidwat-1.4.5 lib/usaidwat/pager.rb
usaidwat-1.4.4 lib/usaidwat/pager.rb
usaidwat-1.4.3 lib/usaidwat/pager.rb
usaidwat-1.4.2 lib/usaidwat/pager.rb
usaidwat-1.4.1 lib/usaidwat/pager.rb
usaidwat-1.4.0 lib/usaidwat/pager.rb
usaidwat-1.3.0 lib/usaidwat/pager.rb
usaidwat-1.2.0 lib/usaidwat/pager.rb
usaidwat-1.1.1 lib/usaidwat/pager.rb
usaidwat-1.1.0 lib/usaidwat/pager.rb
usaidwat-1.0.1 lib/usaidwat/pager.rb
usaidwat-1.0.0 lib/usaidwat/pager.rb