/usr/lib/ruby/vendor_ruby/pry/color_printer.rb is in pry 0.10.3-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | # PP subclass for streaming inspect output in color.
class Pry
class ColorPrinter < ::PP
OBJ_COLOR = begin
code = CodeRay::Encoders::Terminal::TOKEN_COLORS[:keyword]
if code.start_with? "\e"
code
else
"\e[0m\e[0;#{code}m"
end
end
CodeRay::Encoders::Terminal::TOKEN_COLORS[:comment][:self] = "\e[1;34m"
def self.pp(obj, out = $>, width = 79)
q = ColorPrinter.new(out, width)
q.guard_inspect_key { q.pp obj }
q.flush
out << "\n"
end
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
def pp(obj)
super
rescue => e
raise if e.is_a? Pry::Pager::StopPaging
# 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}>"
text highlight_object_literal(str)
end
private
def highlight_object_literal(object_literal)
"#{OBJ_COLOR}#{object_literal}\e[0m"
end
end
end
|