class String

Overview

A String represents an immutable sequence of UTF-8 characters.

A String is typically created with a string literal, enclosing UTF-8 characters in double quotes:

"hello world"

See String literals in the language reference.

A backslash can be used to denote some characters inside the string:

"\"" # double quote
"\\" # backslash
"\e" # escape
"\f" # form feed
"\n" # newline
"\r" # carriage return
"\t" # tab
"\v" # vertical tab

You can use a backslash followed by an u and four hexadecimal characters to denote a unicode codepoint written:

"\u0041" # == "A"

Or you can use curly braces and specify up to six hexadecimal numbers (0 to 10FFFF):

"\u{41}" # == "A"

A string can span multiple lines:

"hello
      world" # same as "hello\n      world"

Note that in the above example trailing and leading spaces, as well as newlines, end up in the resulting string. To avoid this, you can split a string into multiple lines by joining multiple literals with a backslash:

"hello " \
"world, " \
"no newlines" # same as "hello world, no newlines"

Alternatively, a backslash followed by a newline can be inserted inside the string literal:

"hello \
     world, \
     no newlines" # same as "hello world, no newlines"

In this case, leading whitespace is not included in the resulting string.

If you need to write a string that has many double quotes, parentheses, or similar characters, you can use alternative literals:

# Supports double quotes and nested parentheses
%(hello ("world")) # same as "hello (\"world\")"

# Supports double quotes and nested brackets
%[hello ["world"]] # same as "hello [\"world\"]"

# Supports double quotes and nested curlies
%{hello {"world"}} # same as "hello {\"world\"}"

# Supports double quotes and nested angles
%<hello <"world">> # same as "hello <\"world\">"

To create a String with embedded expressions, you can use string interpolation:

a = 1
b = 2
"sum = #{a + b}" # "sum = 3"

This ends up invoking Object#to_s(IO) on each expression enclosed by #{...}.

If you need to dynamically build a string, use String#build or IO::Memory.

Non UTF-8 valid strings

A string might end up being composed of bytes which form an invalid byte sequence according to UTF-8. This can happen if the string is created via one of the constructors that accept bytes, or when getting a string from String.build or IO::Memory. No exception will be raised, but every byte that doesn't start a valid UTF-8 byte sequence is interpreted as though it encodes the Unicode replacement character (U+FFFD) by itself. For example:

# here 255 is not a valid byte value in the UTF-8 encoding
string = String.new(Bytes[255, 97])
string.valid_encoding? # => false

# The first char here is the unicode replacement char
string.chars # => ['�', 'a']

One can also create strings with specific byte value in them by using octal and hexadecimal escape sequences:

# Octal escape sequences
"\101" # # => "A"
"\12"  # # => "\n"
"\1"   # string with one character with code point 1
"\377" # string with one byte with value 255

# Hexadecimal escape sequences
"\x41" # # => "A"
"\xFF" # string with one byte with value 255

The reason for allowing strings that don't have a valid UTF-8 sequence is that the world is full of content that isn't properly encoded, and having a program raise an exception or stop because of this is not good. It's better if programs are more resilient, but show a replacement character when there's an error in incoming data.

Note that this interpretation only applies to methods inside Crystal; calling #to_slice or #to_unsafe, e.g. when passing a string to a C library, will expose the invalid UTF-8 byte sequences. In particular, Regex's underlying engine may reject strings that are not valid UTF-8, or it may invoke undefined behavior on invalid strings. If this is undesired, #scrub could be used to remove the offending byte sequences first.

Included Modules

Defined in:

colorful.cr

Instance methods inherited from module Colorful

black black, black_on_black black_on_black, black_on_black_with_blink black_on_black_with_blink, black_on_black_with_bold black_on_black_with_bold, black_on_black_with_default black_on_black_with_default, black_on_black_with_hide black_on_black_with_hide, black_on_black_with_italic black_on_black_with_italic, black_on_black_with_reversed black_on_black_with_reversed, black_on_black_with_underline black_on_black_with_underline, black_on_blue black_on_blue, black_on_blue_with_blink black_on_blue_with_blink, black_on_blue_with_bold black_on_blue_with_bold, black_on_blue_with_default black_on_blue_with_default, black_on_blue_with_hide black_on_blue_with_hide, black_on_blue_with_italic black_on_blue_with_italic, black_on_blue_with_reversed black_on_blue_with_reversed, black_on_blue_with_underline black_on_blue_with_underline, black_on_cyan black_on_cyan, black_on_cyan_with_blink black_on_cyan_with_blink, black_on_cyan_with_bold black_on_cyan_with_bold, black_on_cyan_with_default black_on_cyan_with_default, black_on_cyan_with_hide black_on_cyan_with_hide, black_on_cyan_with_italic black_on_cyan_with_italic, black_on_cyan_with_reversed black_on_cyan_with_reversed, black_on_cyan_with_underline black_on_cyan_with_underline, black_on_green black_on_green, black_on_green_with_blink black_on_green_with_blink, black_on_green_with_bold black_on_green_with_bold, black_on_green_with_default black_on_green_with_default, black_on_green_with_hide black_on_green_with_hide, black_on_green_with_italic black_on_green_with_italic, black_on_green_with_reversed black_on_green_with_reversed, black_on_green_with_underline black_on_green_with_underline, black_on_magenta black_on_magenta, black_on_magenta_with_blink black_on_magenta_with_blink, black_on_magenta_with_bold black_on_magenta_with_bold, black_on_magenta_with_default black_on_magenta_with_default, black_on_magenta_with_hide black_on_magenta_with_hide, black_on_magenta_with_italic black_on_magenta_with_italic, black_on_magenta_with_reversed black_on_magenta_with_reversed, black_on_magenta_with_underline black_on_magenta_with_underline, black_on_red black_on_red, black_on_red_with_blink black_on_red_with_blink, black_on_red_with_bold black_on_red_with_bold, black_on_red_with_default black_on_red_with_default, black_on_red_with_hide black_on_red_with_hide, black_on_red_with_italic black_on_red_with_italic, black_on_red_with_reversed black_on_red_with_reversed, black_on_red_with_underline black_on_red_with_underline, black_on_white black_on_white, black_on_white_with_blink black_on_white_with_blink, black_on_white_with_bold black_on_white_with_bold, black_on_white_with_default black_on_white_with_default, black_on_white_with_hide black_on_white_with_hide, black_on_white_with_italic black_on_white_with_italic, black_on_white_with_reversed black_on_white_with_reversed, black_on_white_with_underline black_on_white_with_underline, black_on_yellow black_on_yellow, black_on_yellow_with_blink black_on_yellow_with_blink, black_on_yellow_with_bold black_on_yellow_with_bold, black_on_yellow_with_default black_on_yellow_with_default, black_on_yellow_with_hide black_on_yellow_with_hide, black_on_yellow_with_italic black_on_yellow_with_italic, black_on_yellow_with_reversed black_on_yellow_with_reversed, black_on_yellow_with_underline black_on_yellow_with_underline, black_with_blink black_with_blink, black_with_bold black_with_bold, black_with_default black_with_default, black_with_hide black_with_hide, black_with_italic black_with_italic, black_with_reversed black_with_reversed, black_with_underline black_with_underline, blink blink, blue blue, blue_on_black blue_on_black, blue_on_black_with_blink blue_on_black_with_blink, blue_on_black_with_bold blue_on_black_with_bold, blue_on_black_with_default blue_on_black_with_default, blue_on_black_with_hide blue_on_black_with_hide, blue_on_black_with_italic blue_on_black_with_italic, blue_on_black_with_reversed blue_on_black_with_reversed, blue_on_black_with_underline blue_on_black_with_underline, blue_on_blue blue_on_blue, blue_on_blue_with_blink blue_on_blue_with_blink, blue_on_blue_with_bold blue_on_blue_with_bold, blue_on_blue_with_default blue_on_blue_with_default, blue_on_blue_with_hide blue_on_blue_with_hide, blue_on_blue_with_italic blue_on_blue_with_italic, blue_on_blue_with_reversed blue_on_blue_with_reversed, blue_on_blue_with_underline blue_on_blue_with_underline, blue_on_cyan blue_on_cyan, blue_on_cyan_with_blink blue_on_cyan_with_blink, blue_on_cyan_with_bold blue_on_cyan_with_bold, blue_on_cyan_with_default blue_on_cyan_with_default, blue_on_cyan_with_hide blue_on_cyan_with_hide, blue_on_cyan_with_italic blue_on_cyan_with_italic, blue_on_cyan_with_reversed blue_on_cyan_with_reversed, blue_on_cyan_with_underline blue_on_cyan_with_underline, blue_on_green blue_on_green, blue_on_green_with_blink blue_on_green_with_blink, blue_on_green_with_bold blue_on_green_with_bold, blue_on_green_with_default blue_on_green_with_default, blue_on_green_with_hide blue_on_green_with_hide, blue_on_green_with_italic blue_on_green_with_italic, blue_on_green_with_reversed blue_on_green_with_reversed, blue_on_green_with_underline blue_on_green_with_underline, blue_on_magenta blue_on_magenta, blue_on_magenta_with_blink blue_on_magenta_with_blink, blue_on_magenta_with_bold blue_on_magenta_with_bold, blue_on_magenta_with_default blue_on_magenta_with_default, blue_on_magenta_with_hide blue_on_magenta_with_hide, blue_on_magenta_with_italic blue_on_magenta_with_italic, blue_on_magenta_with_reversed blue_on_magenta_with_reversed, blue_on_magenta_with_underline blue_on_magenta_with_underline, blue_on_red blue_on_red, blue_on_red_with_blink blue_on_red_with_blink, blue_on_red_with_bold blue_on_red_with_bold, blue_on_red_with_default blue_on_red_with_default, blue_on_red_with_hide blue_on_red_with_hide, blue_on_red_with_italic blue_on_red_with_italic, blue_on_red_with_reversed blue_on_red_with_reversed, blue_on_red_with_underline blue_on_red_with_underline, blue_on_white blue_on_white, blue_on_white_with_blink blue_on_white_with_blink, blue_on_white_with_bold blue_on_white_with_bold, blue_on_white_with_default blue_on_white_with_default, blue_on_white_with_hide blue_on_white_with_hide, blue_on_white_with_italic blue_on_white_with_italic, blue_on_white_with_reversed blue_on_white_with_reversed, blue_on_white_with_underline blue_on_white_with_underline, blue_on_yellow blue_on_yellow, blue_on_yellow_with_blink blue_on_yellow_with_blink, blue_on_yellow_with_bold blue_on_yellow_with_bold, blue_on_yellow_with_default blue_on_yellow_with_default, blue_on_yellow_with_hide blue_on_yellow_with_hide, blue_on_yellow_with_italic blue_on_yellow_with_italic, blue_on_yellow_with_reversed blue_on_yellow_with_reversed, blue_on_yellow_with_underline blue_on_yellow_with_underline, blue_with_blink blue_with_blink, blue_with_bold blue_with_bold, blue_with_default blue_with_default, blue_with_hide blue_with_hide, blue_with_italic blue_with_italic, blue_with_reversed blue_with_reversed, blue_with_underline blue_with_underline, bold bold, color(color_name : String | Nil, background : Bool = false) color, colorful(options = {} of String => String) colorful, colors colors, cyan cyan, cyan_on_black cyan_on_black, cyan_on_black_with_blink cyan_on_black_with_blink, cyan_on_black_with_bold cyan_on_black_with_bold, cyan_on_black_with_default cyan_on_black_with_default, cyan_on_black_with_hide cyan_on_black_with_hide, cyan_on_black_with_italic cyan_on_black_with_italic, cyan_on_black_with_reversed cyan_on_black_with_reversed, cyan_on_black_with_underline cyan_on_black_with_underline, cyan_on_blue cyan_on_blue, cyan_on_blue_with_blink cyan_on_blue_with_blink, cyan_on_blue_with_bold cyan_on_blue_with_bold, cyan_on_blue_with_default cyan_on_blue_with_default, cyan_on_blue_with_hide cyan_on_blue_with_hide, cyan_on_blue_with_italic cyan_on_blue_with_italic, cyan_on_blue_with_reversed cyan_on_blue_with_reversed, cyan_on_blue_with_underline cyan_on_blue_with_underline, cyan_on_cyan cyan_on_cyan, cyan_on_cyan_with_blink cyan_on_cyan_with_blink, cyan_on_cyan_with_bold cyan_on_cyan_with_bold, cyan_on_cyan_with_default cyan_on_cyan_with_default, cyan_on_cyan_with_hide cyan_on_cyan_with_hide, cyan_on_cyan_with_italic cyan_on_cyan_with_italic, cyan_on_cyan_with_reversed cyan_on_cyan_with_reversed, cyan_on_cyan_with_underline cyan_on_cyan_with_underline, cyan_on_green cyan_on_green, cyan_on_green_with_blink cyan_on_green_with_blink, cyan_on_green_with_bold cyan_on_green_with_bold, cyan_on_green_with_default cyan_on_green_with_default, cyan_on_green_with_hide cyan_on_green_with_hide, cyan_on_green_with_italic cyan_on_green_with_italic, cyan_on_green_with_reversed cyan_on_green_with_reversed, cyan_on_green_with_underline cyan_on_green_with_underline, cyan_on_magenta cyan_on_magenta, cyan_on_magenta_with_blink cyan_on_magenta_with_blink, cyan_on_magenta_with_bold cyan_on_magenta_with_bold, cyan_on_magenta_with_default cyan_on_magenta_with_default, cyan_on_magenta_with_hide cyan_on_magenta_with_hide, cyan_on_magenta_with_italic cyan_on_magenta_with_italic, cyan_on_magenta_with_reversed cyan_on_magenta_with_reversed, cyan_on_magenta_with_underline cyan_on_magenta_with_underline, cyan_on_red cyan_on_red, cyan_on_red_with_blink cyan_on_red_with_blink, cyan_on_red_with_bold cyan_on_red_with_bold, cyan_on_red_with_default cyan_on_red_with_default, cyan_on_red_with_hide cyan_on_red_with_hide, cyan_on_red_with_italic cyan_on_red_with_italic, cyan_on_red_with_reversed cyan_on_red_with_reversed, cyan_on_red_with_underline cyan_on_red_with_underline, cyan_on_white cyan_on_white, cyan_on_white_with_blink cyan_on_white_with_blink, cyan_on_white_with_bold cyan_on_white_with_bold, cyan_on_white_with_default cyan_on_white_with_default, cyan_on_white_with_hide cyan_on_white_with_hide, cyan_on_white_with_italic cyan_on_white_with_italic, cyan_on_white_with_reversed cyan_on_white_with_reversed, cyan_on_white_with_underline cyan_on_white_with_underline, cyan_on_yellow cyan_on_yellow, cyan_on_yellow_with_blink cyan_on_yellow_with_blink, cyan_on_yellow_with_bold cyan_on_yellow_with_bold, cyan_on_yellow_with_default cyan_on_yellow_with_default, cyan_on_yellow_with_hide cyan_on_yellow_with_hide, cyan_on_yellow_with_italic cyan_on_yellow_with_italic, cyan_on_yellow_with_reversed cyan_on_yellow_with_reversed, cyan_on_yellow_with_underline cyan_on_yellow_with_underline, cyan_with_blink cyan_with_blink, cyan_with_bold cyan_with_bold, cyan_with_default cyan_with_default, cyan_with_hide cyan_with_hide, cyan_with_italic cyan_with_italic, cyan_with_reversed cyan_with_reversed, cyan_with_underline cyan_with_underline, default default, green green, green_on_black green_on_black, green_on_black_with_blink green_on_black_with_blink, green_on_black_with_bold green_on_black_with_bold, green_on_black_with_default green_on_black_with_default, green_on_black_with_hide green_on_black_with_hide, green_on_black_with_italic green_on_black_with_italic, green_on_black_with_reversed green_on_black_with_reversed, green_on_black_with_underline green_on_black_with_underline, green_on_blue green_on_blue, green_on_blue_with_blink green_on_blue_with_blink, green_on_blue_with_bold green_on_blue_with_bold, green_on_blue_with_default green_on_blue_with_default, green_on_blue_with_hide green_on_blue_with_hide, green_on_blue_with_italic green_on_blue_with_italic, green_on_blue_with_reversed green_on_blue_with_reversed, green_on_blue_with_underline green_on_blue_with_underline, green_on_cyan green_on_cyan, green_on_cyan_with_blink green_on_cyan_with_blink, green_on_cyan_with_bold green_on_cyan_with_bold, green_on_cyan_with_default green_on_cyan_with_default, green_on_cyan_with_hide green_on_cyan_with_hide, green_on_cyan_with_italic green_on_cyan_with_italic, green_on_cyan_with_reversed green_on_cyan_with_reversed, green_on_cyan_with_underline green_on_cyan_with_underline, green_on_green green_on_green, green_on_green_with_blink green_on_green_with_blink, green_on_green_with_bold green_on_green_with_bold, green_on_green_with_default green_on_green_with_default, green_on_green_with_hide green_on_green_with_hide, green_on_green_with_italic green_on_green_with_italic, green_on_green_with_reversed green_on_green_with_reversed, green_on_green_with_underline green_on_green_with_underline, green_on_magenta green_on_magenta, green_on_magenta_with_blink green_on_magenta_with_blink, green_on_magenta_with_bold green_on_magenta_with_bold, green_on_magenta_with_default green_on_magenta_with_default, green_on_magenta_with_hide green_on_magenta_with_hide, green_on_magenta_with_italic green_on_magenta_with_italic, green_on_magenta_with_reversed green_on_magenta_with_reversed, green_on_magenta_with_underline green_on_magenta_with_underline, green_on_red green_on_red, green_on_red_with_blink green_on_red_with_blink, green_on_red_with_bold green_on_red_with_bold, green_on_red_with_default green_on_red_with_default, green_on_red_with_hide green_on_red_with_hide, green_on_red_with_italic green_on_red_with_italic, green_on_red_with_reversed green_on_red_with_reversed, green_on_red_with_underline green_on_red_with_underline, green_on_white green_on_white, green_on_white_with_blink green_on_white_with_blink, green_on_white_with_bold green_on_white_with_bold, green_on_white_with_default green_on_white_with_default, green_on_white_with_hide green_on_white_with_hide, green_on_white_with_italic green_on_white_with_italic, green_on_white_with_reversed green_on_white_with_reversed, green_on_white_with_underline green_on_white_with_underline, green_on_yellow green_on_yellow, green_on_yellow_with_blink green_on_yellow_with_blink, green_on_yellow_with_bold green_on_yellow_with_bold, green_on_yellow_with_default green_on_yellow_with_default, green_on_yellow_with_hide green_on_yellow_with_hide, green_on_yellow_with_italic green_on_yellow_with_italic, green_on_yellow_with_reversed green_on_yellow_with_reversed, green_on_yellow_with_underline green_on_yellow_with_underline, green_with_blink green_with_blink, green_with_bold green_with_bold, green_with_default green_with_default, green_with_hide green_with_hide, green_with_italic green_with_italic, green_with_reversed green_with_reversed, green_with_underline green_with_underline, hide hide, italic italic, magenta magenta, magenta_on_black magenta_on_black, magenta_on_black_with_blink magenta_on_black_with_blink, magenta_on_black_with_bold magenta_on_black_with_bold, magenta_on_black_with_default magenta_on_black_with_default, magenta_on_black_with_hide magenta_on_black_with_hide, magenta_on_black_with_italic magenta_on_black_with_italic, magenta_on_black_with_reversed magenta_on_black_with_reversed, magenta_on_black_with_underline magenta_on_black_with_underline, magenta_on_blue magenta_on_blue, magenta_on_blue_with_blink magenta_on_blue_with_blink, magenta_on_blue_with_bold magenta_on_blue_with_bold, magenta_on_blue_with_default magenta_on_blue_with_default, magenta_on_blue_with_hide magenta_on_blue_with_hide, magenta_on_blue_with_italic magenta_on_blue_with_italic, magenta_on_blue_with_reversed magenta_on_blue_with_reversed, magenta_on_blue_with_underline magenta_on_blue_with_underline, magenta_on_cyan magenta_on_cyan, magenta_on_cyan_with_blink magenta_on_cyan_with_blink, magenta_on_cyan_with_bold magenta_on_cyan_with_bold, magenta_on_cyan_with_default magenta_on_cyan_with_default, magenta_on_cyan_with_hide magenta_on_cyan_with_hide, magenta_on_cyan_with_italic magenta_on_cyan_with_italic, magenta_on_cyan_with_reversed magenta_on_cyan_with_reversed, magenta_on_cyan_with_underline magenta_on_cyan_with_underline, magenta_on_green magenta_on_green, magenta_on_green_with_blink magenta_on_green_with_blink, magenta_on_green_with_bold magenta_on_green_with_bold, magenta_on_green_with_default magenta_on_green_with_default, magenta_on_green_with_hide magenta_on_green_with_hide, magenta_on_green_with_italic magenta_on_green_with_italic, magenta_on_green_with_reversed magenta_on_green_with_reversed, magenta_on_green_with_underline magenta_on_green_with_underline, magenta_on_magenta magenta_on_magenta, magenta_on_magenta_with_blink magenta_on_magenta_with_blink, magenta_on_magenta_with_bold magenta_on_magenta_with_bold, magenta_on_magenta_with_default magenta_on_magenta_with_default, magenta_on_magenta_with_hide magenta_on_magenta_with_hide, magenta_on_magenta_with_italic magenta_on_magenta_with_italic, magenta_on_magenta_with_reversed magenta_on_magenta_with_reversed, magenta_on_magenta_with_underline magenta_on_magenta_with_underline, magenta_on_red magenta_on_red, magenta_on_red_with_blink magenta_on_red_with_blink, magenta_on_red_with_bold magenta_on_red_with_bold, magenta_on_red_with_default magenta_on_red_with_default, magenta_on_red_with_hide magenta_on_red_with_hide, magenta_on_red_with_italic magenta_on_red_with_italic, magenta_on_red_with_reversed magenta_on_red_with_reversed, magenta_on_red_with_underline magenta_on_red_with_underline, magenta_on_white magenta_on_white, magenta_on_white_with_blink magenta_on_white_with_blink, magenta_on_white_with_bold magenta_on_white_with_bold, magenta_on_white_with_default magenta_on_white_with_default, magenta_on_white_with_hide magenta_on_white_with_hide, magenta_on_white_with_italic magenta_on_white_with_italic, magenta_on_white_with_reversed magenta_on_white_with_reversed, magenta_on_white_with_underline magenta_on_white_with_underline, magenta_on_yellow magenta_on_yellow, magenta_on_yellow_with_blink magenta_on_yellow_with_blink, magenta_on_yellow_with_bold magenta_on_yellow_with_bold, magenta_on_yellow_with_default magenta_on_yellow_with_default, magenta_on_yellow_with_hide magenta_on_yellow_with_hide, magenta_on_yellow_with_italic magenta_on_yellow_with_italic, magenta_on_yellow_with_reversed magenta_on_yellow_with_reversed, magenta_on_yellow_with_underline magenta_on_yellow_with_underline, magenta_with_blink magenta_with_blink, magenta_with_bold magenta_with_bold, magenta_with_default magenta_with_default, magenta_with_hide magenta_with_hide, magenta_with_italic magenta_with_italic, magenta_with_reversed magenta_with_reversed, magenta_with_underline magenta_with_underline, modes modes, on_black on_black, on_black_with_blink on_black_with_blink, on_black_with_bold on_black_with_bold, on_black_with_default on_black_with_default, on_black_with_hide on_black_with_hide, on_black_with_italic on_black_with_italic, on_black_with_reversed on_black_with_reversed, on_black_with_underline on_black_with_underline, on_blue on_blue, on_blue_with_blink on_blue_with_blink, on_blue_with_bold on_blue_with_bold, on_blue_with_default on_blue_with_default, on_blue_with_hide on_blue_with_hide, on_blue_with_italic on_blue_with_italic, on_blue_with_reversed on_blue_with_reversed, on_blue_with_underline on_blue_with_underline, on_cyan on_cyan, on_cyan_with_blink on_cyan_with_blink, on_cyan_with_bold on_cyan_with_bold, on_cyan_with_default on_cyan_with_default, on_cyan_with_hide on_cyan_with_hide, on_cyan_with_italic on_cyan_with_italic, on_cyan_with_reversed on_cyan_with_reversed, on_cyan_with_underline on_cyan_with_underline, on_green on_green, on_green_with_blink on_green_with_blink, on_green_with_bold on_green_with_bold, on_green_with_default on_green_with_default, on_green_with_hide on_green_with_hide, on_green_with_italic on_green_with_italic, on_green_with_reversed on_green_with_reversed, on_green_with_underline on_green_with_underline, on_magenta on_magenta, on_magenta_with_blink on_magenta_with_blink, on_magenta_with_bold on_magenta_with_bold, on_magenta_with_default on_magenta_with_default, on_magenta_with_hide on_magenta_with_hide, on_magenta_with_italic on_magenta_with_italic, on_magenta_with_reversed on_magenta_with_reversed, on_magenta_with_underline on_magenta_with_underline, on_red on_red, on_red_with_blink on_red_with_blink, on_red_with_bold on_red_with_bold, on_red_with_default on_red_with_default, on_red_with_hide on_red_with_hide, on_red_with_italic on_red_with_italic, on_red_with_reversed on_red_with_reversed, on_red_with_underline on_red_with_underline, on_white on_white, on_white_with_blink on_white_with_blink, on_white_with_bold on_white_with_bold, on_white_with_default on_white_with_default, on_white_with_hide on_white_with_hide, on_white_with_italic on_white_with_italic, on_white_with_reversed on_white_with_reversed, on_white_with_underline on_white_with_underline, on_yellow on_yellow, on_yellow_with_blink on_yellow_with_blink, on_yellow_with_bold on_yellow_with_bold, on_yellow_with_default on_yellow_with_default, on_yellow_with_hide on_yellow_with_hide, on_yellow_with_italic on_yellow_with_italic, on_yellow_with_reversed on_yellow_with_reversed, on_yellow_with_underline on_yellow_with_underline, red red, red_on_black red_on_black, red_on_black_with_blink red_on_black_with_blink, red_on_black_with_bold red_on_black_with_bold, red_on_black_with_default red_on_black_with_default, red_on_black_with_hide red_on_black_with_hide, red_on_black_with_italic red_on_black_with_italic, red_on_black_with_reversed red_on_black_with_reversed, red_on_black_with_underline red_on_black_with_underline, red_on_blue red_on_blue, red_on_blue_with_blink red_on_blue_with_blink, red_on_blue_with_bold red_on_blue_with_bold, red_on_blue_with_default red_on_blue_with_default, red_on_blue_with_hide red_on_blue_with_hide, red_on_blue_with_italic red_on_blue_with_italic, red_on_blue_with_reversed red_on_blue_with_reversed, red_on_blue_with_underline red_on_blue_with_underline, red_on_cyan red_on_cyan, red_on_cyan_with_blink red_on_cyan_with_blink, red_on_cyan_with_bold red_on_cyan_with_bold, red_on_cyan_with_default red_on_cyan_with_default, red_on_cyan_with_hide red_on_cyan_with_hide, red_on_cyan_with_italic red_on_cyan_with_italic, red_on_cyan_with_reversed red_on_cyan_with_reversed, red_on_cyan_with_underline red_on_cyan_with_underline, red_on_green red_on_green, red_on_green_with_blink red_on_green_with_blink, red_on_green_with_bold red_on_green_with_bold, red_on_green_with_default red_on_green_with_default, red_on_green_with_hide red_on_green_with_hide, red_on_green_with_italic red_on_green_with_italic, red_on_green_with_reversed red_on_green_with_reversed, red_on_green_with_underline red_on_green_with_underline, red_on_magenta red_on_magenta, red_on_magenta_with_blink red_on_magenta_with_blink, red_on_magenta_with_bold red_on_magenta_with_bold, red_on_magenta_with_default red_on_magenta_with_default, red_on_magenta_with_hide red_on_magenta_with_hide, red_on_magenta_with_italic red_on_magenta_with_italic, red_on_magenta_with_reversed red_on_magenta_with_reversed, red_on_magenta_with_underline red_on_magenta_with_underline, red_on_red red_on_red, red_on_red_with_blink red_on_red_with_blink, red_on_red_with_bold red_on_red_with_bold, red_on_red_with_default red_on_red_with_default, red_on_red_with_hide red_on_red_with_hide, red_on_red_with_italic red_on_red_with_italic, red_on_red_with_reversed red_on_red_with_reversed, red_on_red_with_underline red_on_red_with_underline, red_on_white red_on_white, red_on_white_with_blink red_on_white_with_blink, red_on_white_with_bold red_on_white_with_bold, red_on_white_with_default red_on_white_with_default, red_on_white_with_hide red_on_white_with_hide, red_on_white_with_italic red_on_white_with_italic, red_on_white_with_reversed red_on_white_with_reversed, red_on_white_with_underline red_on_white_with_underline, red_on_yellow red_on_yellow, red_on_yellow_with_blink red_on_yellow_with_blink, red_on_yellow_with_bold red_on_yellow_with_bold, red_on_yellow_with_default red_on_yellow_with_default, red_on_yellow_with_hide red_on_yellow_with_hide, red_on_yellow_with_italic red_on_yellow_with_italic, red_on_yellow_with_reversed red_on_yellow_with_reversed, red_on_yellow_with_underline red_on_yellow_with_underline, red_with_blink red_with_blink, red_with_bold red_with_bold, red_with_default red_with_default, red_with_hide red_with_hide, red_with_italic red_with_italic, red_with_reversed red_with_reversed, red_with_underline red_with_underline, reversed reversed, underline underline, white white, white_on_black white_on_black, white_on_black_with_blink white_on_black_with_blink, white_on_black_with_bold white_on_black_with_bold, white_on_black_with_default white_on_black_with_default, white_on_black_with_hide white_on_black_with_hide, white_on_black_with_italic white_on_black_with_italic, white_on_black_with_reversed white_on_black_with_reversed, white_on_black_with_underline white_on_black_with_underline, white_on_blue white_on_blue, white_on_blue_with_blink white_on_blue_with_blink, white_on_blue_with_bold white_on_blue_with_bold, white_on_blue_with_default white_on_blue_with_default, white_on_blue_with_hide white_on_blue_with_hide, white_on_blue_with_italic white_on_blue_with_italic, white_on_blue_with_reversed white_on_blue_with_reversed, white_on_blue_with_underline white_on_blue_with_underline, white_on_cyan white_on_cyan, white_on_cyan_with_blink white_on_cyan_with_blink, white_on_cyan_with_bold white_on_cyan_with_bold, white_on_cyan_with_default white_on_cyan_with_default, white_on_cyan_with_hide white_on_cyan_with_hide, white_on_cyan_with_italic white_on_cyan_with_italic, white_on_cyan_with_reversed white_on_cyan_with_reversed, white_on_cyan_with_underline white_on_cyan_with_underline, white_on_green white_on_green, white_on_green_with_blink white_on_green_with_blink, white_on_green_with_bold white_on_green_with_bold, white_on_green_with_default white_on_green_with_default, white_on_green_with_hide white_on_green_with_hide, white_on_green_with_italic white_on_green_with_italic, white_on_green_with_reversed white_on_green_with_reversed, white_on_green_with_underline white_on_green_with_underline, white_on_magenta white_on_magenta, white_on_magenta_with_blink white_on_magenta_with_blink, white_on_magenta_with_bold white_on_magenta_with_bold, white_on_magenta_with_default white_on_magenta_with_default, white_on_magenta_with_hide white_on_magenta_with_hide, white_on_magenta_with_italic white_on_magenta_with_italic, white_on_magenta_with_reversed white_on_magenta_with_reversed, white_on_magenta_with_underline white_on_magenta_with_underline, white_on_red white_on_red, white_on_red_with_blink white_on_red_with_blink, white_on_red_with_bold white_on_red_with_bold, white_on_red_with_default white_on_red_with_default, white_on_red_with_hide white_on_red_with_hide, white_on_red_with_italic white_on_red_with_italic, white_on_red_with_reversed white_on_red_with_reversed, white_on_red_with_underline white_on_red_with_underline, white_on_white white_on_white, white_on_white_with_blink white_on_white_with_blink, white_on_white_with_bold white_on_white_with_bold, white_on_white_with_default white_on_white_with_default, white_on_white_with_hide white_on_white_with_hide, white_on_white_with_italic white_on_white_with_italic, white_on_white_with_reversed white_on_white_with_reversed, white_on_white_with_underline white_on_white_with_underline, white_on_yellow white_on_yellow, white_on_yellow_with_blink white_on_yellow_with_blink, white_on_yellow_with_bold white_on_yellow_with_bold, white_on_yellow_with_default white_on_yellow_with_default, white_on_yellow_with_hide white_on_yellow_with_hide, white_on_yellow_with_italic white_on_yellow_with_italic, white_on_yellow_with_reversed white_on_yellow_with_reversed, white_on_yellow_with_underline white_on_yellow_with_underline, white_with_blink white_with_blink, white_with_bold white_with_bold, white_with_default white_with_default, white_with_hide white_with_hide, white_with_italic white_with_italic, white_with_reversed white_with_reversed, white_with_underline white_with_underline, yellow yellow, yellow_on_black yellow_on_black, yellow_on_black_with_blink yellow_on_black_with_blink, yellow_on_black_with_bold yellow_on_black_with_bold, yellow_on_black_with_default yellow_on_black_with_default, yellow_on_black_with_hide yellow_on_black_with_hide, yellow_on_black_with_italic yellow_on_black_with_italic, yellow_on_black_with_reversed yellow_on_black_with_reversed, yellow_on_black_with_underline yellow_on_black_with_underline, yellow_on_blue yellow_on_blue, yellow_on_blue_with_blink yellow_on_blue_with_blink, yellow_on_blue_with_bold yellow_on_blue_with_bold, yellow_on_blue_with_default yellow_on_blue_with_default, yellow_on_blue_with_hide yellow_on_blue_with_hide, yellow_on_blue_with_italic yellow_on_blue_with_italic, yellow_on_blue_with_reversed yellow_on_blue_with_reversed, yellow_on_blue_with_underline yellow_on_blue_with_underline, yellow_on_cyan yellow_on_cyan, yellow_on_cyan_with_blink yellow_on_cyan_with_blink, yellow_on_cyan_with_bold yellow_on_cyan_with_bold, yellow_on_cyan_with_default yellow_on_cyan_with_default, yellow_on_cyan_with_hide yellow_on_cyan_with_hide, yellow_on_cyan_with_italic yellow_on_cyan_with_italic, yellow_on_cyan_with_reversed yellow_on_cyan_with_reversed, yellow_on_cyan_with_underline yellow_on_cyan_with_underline, yellow_on_green yellow_on_green, yellow_on_green_with_blink yellow_on_green_with_blink, yellow_on_green_with_bold yellow_on_green_with_bold, yellow_on_green_with_default yellow_on_green_with_default, yellow_on_green_with_hide yellow_on_green_with_hide, yellow_on_green_with_italic yellow_on_green_with_italic, yellow_on_green_with_reversed yellow_on_green_with_reversed, yellow_on_green_with_underline yellow_on_green_with_underline, yellow_on_magenta yellow_on_magenta, yellow_on_magenta_with_blink yellow_on_magenta_with_blink, yellow_on_magenta_with_bold yellow_on_magenta_with_bold, yellow_on_magenta_with_default yellow_on_magenta_with_default, yellow_on_magenta_with_hide yellow_on_magenta_with_hide, yellow_on_magenta_with_italic yellow_on_magenta_with_italic, yellow_on_magenta_with_reversed yellow_on_magenta_with_reversed, yellow_on_magenta_with_underline yellow_on_magenta_with_underline, yellow_on_red yellow_on_red, yellow_on_red_with_blink yellow_on_red_with_blink, yellow_on_red_with_bold yellow_on_red_with_bold, yellow_on_red_with_default yellow_on_red_with_default, yellow_on_red_with_hide yellow_on_red_with_hide, yellow_on_red_with_italic yellow_on_red_with_italic, yellow_on_red_with_reversed yellow_on_red_with_reversed, yellow_on_red_with_underline yellow_on_red_with_underline, yellow_on_white yellow_on_white, yellow_on_white_with_blink yellow_on_white_with_blink, yellow_on_white_with_bold yellow_on_white_with_bold, yellow_on_white_with_default yellow_on_white_with_default, yellow_on_white_with_hide yellow_on_white_with_hide, yellow_on_white_with_italic yellow_on_white_with_italic, yellow_on_white_with_reversed yellow_on_white_with_reversed, yellow_on_white_with_underline yellow_on_white_with_underline, yellow_on_yellow yellow_on_yellow, yellow_on_yellow_with_blink yellow_on_yellow_with_blink, yellow_on_yellow_with_bold yellow_on_yellow_with_bold, yellow_on_yellow_with_default yellow_on_yellow_with_default, yellow_on_yellow_with_hide yellow_on_yellow_with_hide, yellow_on_yellow_with_italic yellow_on_yellow_with_italic, yellow_on_yellow_with_reversed yellow_on_yellow_with_reversed, yellow_on_yellow_with_underline yellow_on_yellow_with_underline, yellow_with_blink yellow_with_blink, yellow_with_bold yellow_with_bold, yellow_with_default yellow_with_default, yellow_with_hide yellow_with_hide, yellow_with_italic yellow_with_italic, yellow_with_reversed yellow_with_reversed, yellow_with_underline yellow_with_underline