class Rainbow::StringUtils

def self.wrap_with_sgr(string, codes)

def self.wrap_with_sgr(string, codes)
  return string if codes.empty?
  seq = "\e[" + codes.join(";") + "m"
  string = string.sub(/^(\e\[([\d;]+)m)*/) { |m| m + seq }
  return string if string.end_with? "\e[0m"
  string + "\e[0m"
end