Class: Pry::Terminal
Class Method Summary collapse
- .actual_screen_size ⇒ Object
-
.height! ⇒ Object
Return a screen height or the default if that fails.
-
.screen_size ⇒ Object
Return a pair of [rows, columns] which gives the size of the window.
- .screen_size_according_to_ansicon_env ⇒ Object
- .screen_size_according_to_env ⇒ Object
- .screen_size_according_to_io_console ⇒ Object
- .screen_size_according_to_readline ⇒ Object
-
.size!(default = [27, 80]) ⇒ Object
Return a screen size or a default if that fails.
-
.width! ⇒ Object
Return a screen width or the default if that fails.
Class Method Details
.actual_screen_size ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/pry/terminal.rb', line 31 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! ⇒ Object
Return a screen height or the default if that fails.
27 28 29 |
# File 'lib/pry/terminal.rb', line 27 def height! size![0] end |
.screen_size ⇒ Object
Return a pair of [rows, columns] which gives the size of the window.
If the window size cannot be determined, return nil.
7 8 9 10 11 12 13 14 |
# File 'lib/pry/terminal.rb', line 7 def screen_size rows, cols = actual_screen_size if rows.to_i != 0 && cols.to_i != 0 [rows.to_i, cols.to_i] else nil end end |
.screen_size_according_to_ansicon_env ⇒ Object
78 79 80 81 82 |
# File 'lib/pry/terminal.rb', line 78 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 ⇒ Object
62 63 64 65 |
# File 'lib/pry/terminal.rb', line 62 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 ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/pry/terminal.rb', line 43 def screen_size_according_to_io_console return if Pry::Helpers::BaseHelpers.jruby? begin require 'io/console' begin if $stdout.respond_to?(:tty?) && $stdout.tty? && $stdout.respond_to?(:winsize) $stdout.winsize end rescue Errno::EOPNOTSUPP # $stdout is probably a socket, which doesn't support #winsize. end rescue LoadError # They probably don't have the io/console stdlib or the io-console gem. # We'll keep trying. end end |
.screen_size_according_to_readline ⇒ Object
67 68 69 70 71 72 73 74 75 76 |
# File 'lib/pry/terminal.rb', line 67 def screen_size_according_to_readline if defined?(Readline) && 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]) ⇒ Object
Return a screen size or a default if that fails.
17 18 19 |
# File 'lib/pry/terminal.rb', line 17 def size! default = [27, 80] screen_size || default end |
.width! ⇒ Object
Return a screen width or the default if that fails.
22 23 24 |
# File 'lib/pry/terminal.rb', line 22 def width! size![1] end |