/usr/lib/ruby/vendor_ruby/pry/helpers/text.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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | class Pry
module Helpers
# The methods defined on {Text} are available to custom commands via {Pry::Command#text}.
module Text
COLORS =
{
"black" => 0,
"red" => 1,
"green" => 2,
"yellow" => 3,
"blue" => 4,
"purple" => 5,
"magenta" => 5,
"cyan" => 6,
"white" => 7
}
class << self
COLORS.each_pair do |color, value|
define_method color do |text|
"\033[0;#{30+value}m#{text}\033[0m"
end
define_method "bright_#{color}" do |text|
"\033[1;#{30+value}m#{text}\033[0m"
end
end
# Remove any color codes from _text_.
#
# @param [String, #to_s] text
# @return [String] _text_ stripped of any color codes.
def strip_color(text)
text.to_s.gsub(/\e\[.*?(\d)+m/ , '')
end
# Returns _text_ as bold text for use on a terminal.
#
# @param [String, #to_s] text
# @return [String] _text_
def bold(text)
"\e[1m#{text}\e[0m"
end
# Returns `text` in the default foreground colour.
# Use this instead of "black" or "white" when you mean absence of colour.
#
# @param [String, #to_s] text
# @return [String]
def default(text)
text.to_s
end
alias_method :bright_default, :bold
# Executes the block with `Pry.config.color` set to false.
# @yield
# @return [void]
def no_color(&block)
boolean = Pry.config.color
Pry.config.color = false
yield
ensure
Pry.config.color = boolean
end
# Executes the block with `Pry.config.pager` set to false.
# @yield
# @return [void]
def no_pager(&block)
boolean = Pry.config.pager
Pry.config.pager = false
yield
ensure
Pry.config.pager = boolean
end
# Returns _text_ in a numbered list, beginning at _offset_.
#
# @param [#each_line] text
# @param [Fixnum] offset
# @return [String]
def with_line_numbers(text, offset, color=:blue)
lines = text.each_line.to_a
max_width = (offset + lines.count).to_s.length
lines.each_with_index.map do |line, index|
adjusted_index = (index + offset).to_s.rjust(max_width)
"#{self.send(color, adjusted_index)}: #{line}"
end.join
end
# Returns _text_ indented by _chars_ spaces.
#
# @param [String] text
# @param [Fixnum] chars
def indent(text, chars)
text.lines.map { |l| "#{' ' * chars}#{l}" }.join
end
end
end
end
end
|