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