Class: Pry::ColorPrinter

Inherits:
PP show all
Defined in:
lib/pry/color_printer.rb

Overview

PP subclass for streaming inspect output in color.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.default(_output, value, pry_instance) ⇒ Object



11
12
13
14
15
16
# File 'lib/pry/color_printer.rb', line 11

def self.default(_output, value, pry_instance)
  pry_instance.pager.open do |pager|
    pager.print pry_instance.config.output_prefix
    pp(value, pager, pry_instance.output.width - 1)
  end
end

.pp(obj, output = $DEFAULT_OUTPUT, max_width = 79) ⇒ Object



18
19
20
21
22
23
# File 'lib/pry/color_printer.rb', line 18

def self.pp(obj, output = $DEFAULT_OUTPUT, max_width = 79)
  queue = ColorPrinter.new(output, max_width, "\n")
  queue.guard_inspect_key { queue.pp(obj) }
  queue.flush
  output << "\n"
end

Instance Method Details

#pp(object) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/pry/color_printer.rb', line 25

def pp(object)
  return super unless object.is_a?(String)

  # Avoid calling Ruby 2.4+ String#pretty_print that prints multiline
  # Strings prettier
  text(object.inspect)
rescue StandardError => exception
  raise if exception.is_a?(Pry::Pager::StopPaging)

  text(highlight_object_literal(inspect_object(object)))
end

#text(str, max_width = str.length) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/pry/color_printer.rb', line 37

def text(str, max_width = str.length)
  if str.include?("\e[")
    super("#{str}\e[0m", max_width)
  elsif str.start_with?('#<') || %w[= >].include?(str)
    super(highlight_object_literal(str), max_width)
  else
    super(SyntaxHighlighter.highlight(str), max_width)
  end
end