class Pry::Output
Constants
- DEFAULT_SIZE
@return [Array<Integer>] default terminal screen size [rows, cols]
Attributes
pry_instance[R]
Public Class Methods
new(pry_instance)
click to toggle source
# File lib/pry/output.rb, line 10 def initialize(pry_instance) @output = pry_instance.config.output @color = pry_instance.config.color end
Public Instance Methods
decolorize_maybe(str)
click to toggle source
# File lib/pry/output.rb, line 53 def decolorize_maybe(str) return str if @color Pry::Helpers::Text.strip_color(str) end
height()
click to toggle source
Return a screen height or the default if that fails.
# File lib/pry/output.rb, line 74 def height size.first end
method_missing(method_name, *args, &block)
click to toggle source
Calls superclass method
# File lib/pry/output.rb, line 41 def method_missing(method_name, *args, &block) if @output.respond_to?(method_name) @output.__send__(method_name, *args, &block) else super end end
print(*objs)
click to toggle source
# File lib/pry/output.rb, line 28 def print(*objs) objs.each do |obj| @output.print decolorize_maybe(obj.to_s) end nil end
puts(*objs)
click to toggle source
# File lib/pry/output.rb, line 15 def puts(*objs) return print "\n" if objs.empty? objs.each do |obj| if (ary = Array.try_convert(obj)) puts(*ary) else print "#{obj.to_s.chomp}\n" end end nil end
respond_to_missing?(method_name, include_private = false)
click to toggle source
# File lib/pry/output.rb, line 49 def respond_to_missing?(method_name, include_private = false) @output.respond_to?(method_name, include_private) end
size()
click to toggle source
@return [Array<Integer>] a pair of [rows, columns] which gives the size of
the window. If the window size cannot be determined, the default value.
# File lib/pry/output.rb, line 61 def size rows, cols = actual_screen_size return [rows.to_i, cols.to_i] if rows.to_i != 0 && cols.to_i != 0 DEFAULT_SIZE end
tty?()
click to toggle source
# File lib/pry/output.rb, line 37 def tty? @output.respond_to?(:tty?) && @output.tty? end
width()
click to toggle source
Return a screen width or the default if that fails.
# File lib/pry/output.rb, line 69 def width size.last end
Private Instance Methods
actual_screen_size()
click to toggle source
# File lib/pry/output.rb, line 80 def actual_screen_size # The best way, if possible (requires non-jruby >=1.9 or io-console gem). io_console_size || # Fall back to the old standby, though it might be stale. env_size || # Fall further back, though this one is also out of date without # something calling Readline.set_screen_size. readline_size || # Windows users can otherwise run ansicon and get a decent answer. ansicon_env_size end
ansicon_env_size()
click to toggle source
# File lib/pry/output.rb, line 125 def ansicon_env_size return unless Pry::Env['ANSICON'] =~ /\((.*)x(.*)\)/ size = [Regexp.last_match(2), Regexp.last_match(1)] size if nonzero_column?(size) end
env_size()
click to toggle source
# File lib/pry/output.rb, line 109 def env_size size = [Pry::Env['LINES'] || Pry::Env['ROWS'], Pry::Env['COLUMNS']] size if nonzero_column?(size) end
io_console_size()
click to toggle source
# File lib/pry/output.rb, line 92 def io_console_size return if Pry::Helpers::Platform.jruby? begin require 'io/console' begin @output.winsize if tty? && @output.respond_to?(:winsize) rescue Errno::EOPNOTSUPP # rubocop:disable Lint/HandleExceptions # Output is probably a socket, which doesn't support #winsize. end rescue LoadError # rubocop:disable Lint/HandleExceptions # They probably don't have the io/console stdlib or the io-console gem. # We'll keep trying. end end
nonzero_column?(size)
click to toggle source
# File lib/pry/output.rb, line 132 def nonzero_column?(size) size[1].to_i > 0 end
readline_size()
click to toggle source
# File lib/pry/output.rb, line 114 def readline_size return unless defined?(Readline) && Readline.respond_to?(:get_screen_size) size = Readline.get_screen_size size if nonzero_column?(size) rescue Java::JavaLang::NullPointerException # This rescue won't happen on jrubies later than: # https://github.com/jruby/jruby/pull/436 nil end