module TestBench::Output::Palette

Public Class Methods

apply(prose, **colors) click to toggle source
# File lib/test_bench/output/palette.rb, line 4
def self.apply prose, **colors
  escape_code = self.escape_code(**colors)

  if escape_code.empty?
    prose
  else
    "#{escape_code}#{prose}\e[0m"
  end
end
escape_code(fg: nil, bg: nil) click to toggle source
# File lib/test_bench/output/palette.rb, line 14
def self.escape_code fg: nil, bg: nil
  return '' if fg.nil? and bg.nil?

  brightness, fg = get fg if fg
  _, bg = get bg if bg

  str = String.new "\e["

  str << "#{brightness};3#{fg}" if fg
  str << ';' if fg and bg
  str << "4#{bg}" if bg
  str << 'm'

  str
end
get(name) click to toggle source
# File lib/test_bench/output/palette.rb, line 30
def self.get name
  code = names.index name
  return unless code
  brightness, code = code.divmod 8
  return brightness, code
end
names() click to toggle source
# File lib/test_bench/output/palette.rb, line 37
def self.names
  @names ||= %i(
    black
    red
    green
    brown
    blue
    magenta
    cyan
    gray
    dark_gray
    bright_red
    bright_green
    yellow
    bright_blue
    bright_magenta
    bright_cyan
    white
  )
end