class Pry::Terminal

Public Class Methods

actual_screen_size() click to toggle source
# File lib/pry/terminal.rb, line 30
def actual_screen_size
  # The best way, if possible (requires non-jruby ≥1.9 or io-console gem)
  screen_size_according_to_io_console or
    # Fall back to the old standby, though it might be stale:
    screen_size_according_to_env or
    # Fall further back, though this one is also out of date without something
    # calling Readline.set_screen_size
    screen_size_according_to_readline or
    # Windows users can otherwise run ansicon and get a decent answer:
    screen_size_according_to_ansicon_env
end
height!() click to toggle source

Return a screen height or the default if that fails.

# File lib/pry/terminal.rb, line 26
def height!
  size![0]
end
screen_size() click to toggle source

Return a pair of [rows, columns] which gives the size of the window.

If the window size cannot be determined, return nil.

# File lib/pry/terminal.rb, line 6
def screen_size
  rows, cols = actual_screen_size
  if rows && cols
    [rows.to_i, cols.to_i]
  else
    nil
  end
end
screen_size_according_to_ansicon_env() click to toggle source
# File lib/pry/terminal.rb, line 66
def screen_size_according_to_ansicon_env
  return unless ENV['ANSICON'] =~ /\((.*)x(.*)\)/
  size = [$2, $1]
  size if nonzero_column?(size)
end
screen_size_according_to_env() click to toggle source
# File lib/pry/terminal.rb, line 50
def screen_size_according_to_env
  size = [ENV['LINES'] || ENV['ROWS'], ENV['COLUMNS']]
  size if nonzero_column?(size)
end
screen_size_according_to_io_console() click to toggle source
# File lib/pry/terminal.rb, line 42
def screen_size_according_to_io_console
  return if Pry::Helpers::BaseHelpers.jruby?
  require 'io/console'
  $stdout.winsize if $stdout.tty? and $stdout.respond_to?(:winsize)
rescue LoadError
  # They're probably on 1.8 without the io-console gem. We'll keep trying.
end
screen_size_according_to_readline() click to toggle source
# File lib/pry/terminal.rb, line 55
def screen_size_according_to_readline
  if Readline.respond_to?(:get_screen_size)
    size = Readline.get_screen_size
    size if nonzero_column?(size)
  end
rescue Java::JavaLang::NullPointerException
  # This rescue won't happen on jrubies later than:
  #     https://github.com/jruby/jruby/pull/436
  nil
end
size!(default = [27, 80]) click to toggle source

Return a screen size or a default if that fails.

# File lib/pry/terminal.rb, line 16
def size! default = [27, 80]
  screen_size || default
end
width!() click to toggle source

Return a screen width or the default if that fails.

# File lib/pry/terminal.rb, line 21
def width!
  size![1]
end