class XTerm
Represents an XTerm-compatible output handler with color and style support.
Definitions
COLORS = {...}
Color codes for ANSI terminal colors.
Implementation
COLORS = {
black: 0,
red: 1,
green: 2,
yellow: 3,
blue: 4,
magenta: 5,
cyan: 6,
white: 7,
default: 9,
}
ATTRIBUTES = {...}
Style attribute codes for ANSI terminal attributes.
Implementation
ATTRIBUTES = {
normal: 0,
bold: 1,
bright: 1,
faint: 2,
italic: 3,
underline: 4,
blink: 5,
reverse: 7,
hidden: 8,
}
def colors?
Signature
-
returns
Boolean Always returns true, as XTerm output supports colors.
Implementation
def colors?
true
end
def size
Signature
-
returns
Array(Integer) The terminal size [height, width].
Implementation
def size
@io.winsize
end
def style(foreground, background = nil, *attributes)
Create an ANSI escape sequence for styling.
Signature
-
parameter
foregroundSymbol, nil The foreground color name.
-
parameter
backgroundSymbol, nil The background color name.
-
parameter
attributesArray Additional style attributes.
-
returns
String An ANSI escape sequence.
Implementation
def style(foreground, background = nil, *attributes)
tokens = []
if foreground
tokens << 30 + COLORS.fetch(foreground)
end
if background
tokens << 40 + COLORS.fetch(background)
end
attributes.each do |attribute|
tokens << ATTRIBUTES.fetch(attribute){attribute.to_i}
end
return "\e[#{tokens.join(';')}m"
end
def reset
Signature
-
returns
String The ANSI reset sequence.
Implementation
def reset
"\e[0m"
end