1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00

color_printer: cosmetic refactoring

Changes:

* method extractions
* indentation fixes
* brackets for methods
* clearer variable names
This commit is contained in:
Kyrylo Silin 2019-03-30 01:23:54 +02:00
parent d3f9913d1a
commit d107541951

View file

@ -6,54 +6,35 @@ class Pry
class ColorPrinter < ::PP
Pry::SyntaxHighlighter.overwrite_coderay_comment_token!
def self.pp(obj, out = $DEFAULT_OUTPUT, width = 79, newline = "\n")
q = ColorPrinter.new(out, width, newline)
q.guard_inspect_key { q.pp obj }
q.flush
out << "\n"
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
def text(str, width = str.length)
# Don't recolorize output with color [Issue #751]
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
def text(str, max_width = str.length)
if str.include?("\e[")
super "#{str}\e[0m", width
elsif str.start_with?('#<') || str == '=' || str == '>'
super highlight_object_literal(str), width
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), width)
super(SyntaxHighlighter.highlight(str), max_width)
end
end
def pp(obj)
if obj.is_a?(String)
# Avoid calling Ruby 2.4+ String#pretty_print that prints multiline
# Strings prettier
text(obj.inspect)
else
super
end
rescue StandardError => e
raise if e.is_a? Pry::Pager::StopPaging
begin
str = obj.inspect
rescue StandardError
# 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 = begin
obj.__id__.to_s(16)
rescue StandardError
0
end
str = "#<#{klass}:0x#{obj_id}>"
end
text highlight_object_literal(str)
end
private
def highlight_object_literal(object_literal)
@ -61,5 +42,16 @@ class Pry
obj_color = code.start_with?("\e") ? code : "\e[0m\e[0;#{code}m"
"#{obj_color}#{object_literal}\e[0m"
end
def inspect_object(object)
object.inspect
rescue StandardError
# Read the class name off of the singleton class to provide a default
# inspect.
singleton = class << object; self; end
ancestors = Pry::Method.safe_send(singleton, :ancestors)
klass = ancestors.find { |k| k != singleton }
"#<#{klass}:0x#{object.__id__.to_s(16)}>"
end
end
end