class Pry::ColorPrinter

Constants

OBJ_COLOR

Public Class Methods

pp(obj, out = $>, width = 79) click to toggle source
# File lib/pry/color_printer.rb, line 15
def self.pp(obj, out = $>, width = 79)
  q = ColorPrinter.new(out, width)
  q.guard_inspect_key { q.pp obj }
  q.flush
  out << "\n"
end

Public Instance Methods

pp(obj) click to toggle source
Calls superclass method
# File lib/pry/color_printer.rb, line 33
def pp(obj)
  if String === obj
    # Avoid calling Ruby 2.4+ String#pretty_print that prints multiline
    # Strings prettier
    Object.instance_method(:pretty_print).bind(obj).call
  else
    super
  end
rescue => e
  raise if e.is_a? Pry::Pager::StopPaging
  begin
    str = obj.inspect
  rescue Exception 
    # Read the class name off of the singleton class to provide a default
    # inspect.
    singleton = class << obj; self; end
    ancestors = Pry::Method.safe_send(singleton, :ancestors)
    klass  = ancestors.reject { |k| k == singleton }.first
    obj_id = obj.__id__.to_s(16) rescue 0
    str    = "#<#{klass}:0x#{obj_id}>"
  end

  text highlight_object_literal(str)
end
text(str, width = str.length) click to toggle source
Calls superclass method
# File lib/pry/color_printer.rb, line 22
def text(str, width = str.length)
  # Don't recolorize output with color [Issue #751]
  if str.include?("\e[")
    super "#{str}\e[0m", width
  elsif str.start_with?('#<') || str == '=' || str == '>'
    super highlight_object_literal(str), width
  else
    super CodeRay.scan(str, :ruby).term, width
  end
end

Private Instance Methods

highlight_object_literal(object_literal) click to toggle source
# File lib/pry/color_printer.rb, line 60
def highlight_object_literal(object_literal)
  "#{OBJ_COLOR}#{object_literal}\e[0m"
end