Sha256: d9fc22661e888191df3a6bec8dc3c103dcac37bff37b971b28aa8030e08bec81

Contents?: true

Size: 1.52 KB

Versions: 8

Compression:

Stored size: 1.52 KB

Contents

class Pry::TerminalInfo
  # Return a pair of [rows, columns] which gives the size of the window.
  #
  # If the window size cannot be determined, return nil.
  def self.screen_size
    rows, cols = actual_screen_size
    if rows && cols
      [rows.to_i, cols.to_i]
    else
      nil
    end
  end

  # Return a screen width or a default if it fails.
  def self.width! default = 80
    (screen_size || [nil, default])[1]
  end

  def self.actual_screen_size
    [
      # Some readlines also provides get_screen_size.
      # Readline comes before IO#winsize because jruby sometimes defaults winsize to [25, 80]
      readline_screen_size,

      # io/console adds a winsize method to IO streams.
      # rescue nil for jruby 1.7.0 [jruby/jruby#354]
      $stdout.tty? && $stdout.respond_to?(:winsize) && ($stdout.winsize rescue nil),

      # Otherwise try to use the environment (this may be out of date due
      # to window resizing, but it's better than nothing).
      [ENV["LINES"] || ENV["ROWS"], ENV["COLUMNS"]],

      # If the user is running within ansicon, then use the screen size
      # that it reports (same caveats apply as with ROWS and COLUMNS)
      ENV['ANSICON'] =~ /\((.*)x(.*)\)/ && [$2, $1],
    ].detect do |(_, cols)|
      cols.to_i > 0
    end
  end

  def self.readline_screen_size
    Readline.get_screen_size if Readline.respond_to?(:get_screen_size)
  rescue Java::JavaLang::NullPointerException
    # This rescue won't happen on jrubies later than:
    #     https://github.com/jruby/jruby/pull/436
    nil
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
pry-0.9.11.4 lib/pry/terminal_info.rb
pry-0.9.11.4-i386-mswin32 lib/pry/terminal_info.rb
pry-0.9.11.4-i386-mingw32 lib/pry/terminal_info.rb
pry-0.9.11.4-java lib/pry/terminal_info.rb
pry-0.9.11.3 lib/pry/terminal_info.rb
pry-0.9.11.3-i386-mswin32 lib/pry/terminal_info.rb
pry-0.9.11.3-i386-mingw32 lib/pry/terminal_info.rb
pry-0.9.11.3-java lib/pry/terminal_info.rb