Sha256: 35f1a64e0bbc44c01b41655b95175756c93bea2f2efd0b1ba1cd2dbbea38af20

Contents?: true

Size: 921 Bytes

Versions: 65

Compression:

Stored size: 921 Bytes

Contents

module GitStyleBinary
  module Helpers
    module Pager

      # by Nathan Weizenbaum - http://nex-3.com/posts/73-git-style-automatic-paging-in-ruby
      def run_pager
        return if PLATFORM =~ /win32/
        return unless STDOUT.tty?
        STDOUT.use_color = true

        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' # Don't page if the input is short enough

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

      module_function :run_pager

    end
  end
end

Version data entries

65 entries across 65 versions & 5 rubygems

Version Path
auser-poolparty-1.2.10 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.2.11 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.2.12 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.2.3 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.2.4 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.2.7 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.2.8 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.2.9 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.3.0 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.3.1 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.3.10 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.3.11 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.3.12 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.3.13 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.3.14 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.3.15 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.3.16 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.3.17 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.3.2 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb
auser-poolparty-1.3.3 vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb