Sha256: 30efa7483353e09a24e7f437ca743f86e7cdf6a510339138a17a5018e7eaeddb

Contents?: true

Size: 1.39 KB

Versions: 12

Compression:

Stored size: 1.39 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

  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

12 entries across 12 versions & 1 rubygems

Version Path
pry-0.9.11.2 lib/pry/terminal_info.rb
pry-0.9.11.2-i386-mswin32 lib/pry/terminal_info.rb
pry-0.9.11.2-i386-mingw32 lib/pry/terminal_info.rb
pry-0.9.11.2-java lib/pry/terminal_info.rb
pry-0.9.11.1 lib/pry/terminal_info.rb
pry-0.9.11.1-i386-mswin32 lib/pry/terminal_info.rb
pry-0.9.11.1-i386-mingw32 lib/pry/terminal_info.rb
pry-0.9.11.1-java lib/pry/terminal_info.rb
pry-0.9.11 lib/pry/terminal_info.rb
pry-0.9.11-i386-mswin32 lib/pry/terminal_info.rb
pry-0.9.11-i386-mingw32 lib/pry/terminal_info.rb
pry-0.9.11-java lib/pry/terminal_info.rb