class Term::ANSIColor::Attribute

def self.[](name, true_coloring: false)

def self.[](name, true_coloring: false)
  true_coloring ||= Term::ANSIColor.true_coloring?
  if true_coloring
    case
    when self === name                              then name
    when Array === name                             then true_color name
    when name.respond_to?(:to_rgb_triple)           then true_color(name.to_rgb_triple.to_a)
    when name.to_s =~ /\A(on_)?(\d+)\z/             then get "#$1color#$2"
    when name.to_s =~ /\A#([0-9a-f]{3}){1,2}\z/i    then true_color name
    when name.to_s =~ /\Aon_#([0-9a-f]{3}){1,2}\z/i then on_true_color name
    else                                            get name
    end
  else
    case
    when self === name                              then name
    when Array === name                             then nearest_rgb_color name
    when name.respond_to?(:to_rgb_triple)           then nearest_rgb_color(name.to_rgb_triple.to_a)
    when name.to_s =~ /\A(on_)?(\d+)\z/             then get "#$1color#$2"
    when name.to_s =~ /\A#([0-9a-f]{3}){1,2}\z/i    then nearest_rgb_color name
    when name.to_s =~ /\Aon_#([0-9a-f]{3}){1,2}\z/i then nearest_rgb_on_color name
    else                                            get name
    end
  end
end