/usr/lib/ruby/vendor_ruby/rspec/core/formatters/console_codes.rb is in ruby-rspec-core 3.5.0c3e0m0s0-1.
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 | module RSpec
module Core
module Formatters
# ConsoleCodes provides helpers for formatting console output
# with ANSI codes, e.g. color's and bold.
module ConsoleCodes
# @private
VT100_CODES =
{
:black => 30,
:red => 31,
:green => 32,
:yellow => 33,
:blue => 34,
:magenta => 35,
:cyan => 36,
:white => 37,
:bold => 1,
}
# @private
VT100_CODE_VALUES = VT100_CODES.invert
module_function
# @private
CONFIG_COLORS_TO_METHODS = Configuration.instance_methods.grep(/_color\z/).inject({}) do |hash, method|
hash[method.to_s.sub(/_color\z/, '').to_sym] = method
hash
end
# Fetches the correct code for the supplied symbol, or checks
# that a code is valid. Defaults to white (37).
#
# @param code_or_symbol [Symbol, Fixnum] Symbol or code to check
# @return [Fixnum] a console code
def console_code_for(code_or_symbol)
if (config_method = CONFIG_COLORS_TO_METHODS[code_or_symbol])
console_code_for RSpec.configuration.__send__(config_method)
elsif VT100_CODE_VALUES.key?(code_or_symbol)
code_or_symbol
else
VT100_CODES.fetch(code_or_symbol) do
console_code_for(:white)
end
end
end
# Wraps a piece of text in ANSI codes with the supplied code. Will
# only apply the control code if `RSpec.configuration.color_enabled?`
# returns true.
#
# @param text [String] the text to wrap
# @param code_or_symbol [Symbol, Fixnum] the desired control code
# @return [String] the wrapped text
def wrap(text, code_or_symbol)
if RSpec.configuration.color_enabled?
"\e[#{console_code_for(code_or_symbol)}m#{text}\e[0m"
else
text
end
end
end
end
end
end
|