mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-28 20:16:58 +03:00
97452c0ca1
API is (for now) mostly by value, there are options to use it by reference if you like. Hash and equality functions must be pure and by reference (forward looking to the day when something like send_map becomes the standard map).
73 lines
2.0 KiB
Rust
73 lines
2.0 KiB
Rust
//! Simple ANSI color library
|
|
|
|
import core::option;
|
|
|
|
// FIXME (#2807): Windows support.
|
|
|
|
const color_black: u8 = 0u8;
|
|
const color_red: u8 = 1u8;
|
|
const color_green: u8 = 2u8;
|
|
const color_yellow: u8 = 3u8;
|
|
const color_blue: u8 = 4u8;
|
|
const color_magenta: u8 = 5u8;
|
|
const color_cyan: u8 = 6u8;
|
|
const color_light_gray: u8 = 7u8;
|
|
const color_light_grey: u8 = 7u8;
|
|
const color_dark_gray: u8 = 8u8;
|
|
const color_dark_grey: u8 = 8u8;
|
|
const color_bright_red: u8 = 9u8;
|
|
const color_bright_green: u8 = 10u8;
|
|
const color_bright_yellow: u8 = 11u8;
|
|
const color_bright_blue: u8 = 12u8;
|
|
const color_bright_magenta: u8 = 13u8;
|
|
const color_bright_cyan: u8 = 14u8;
|
|
const color_bright_white: u8 = 15u8;
|
|
|
|
fn esc(writer: io::writer) { writer.write(~[0x1bu8, '[' as u8]); }
|
|
|
|
/// Reset the foreground and background colors to default
|
|
fn reset(writer: io::writer) {
|
|
esc(writer);
|
|
writer.write(~['0' as u8, 'm' as u8]);
|
|
}
|
|
|
|
/// Returns true if the terminal supports color
|
|
fn color_supported() -> bool {
|
|
let supported_terms = ~[~"xterm-color", ~"xterm",
|
|
~"screen-bce", ~"xterm-256color"];
|
|
return alt os::getenv(~"TERM") {
|
|
option::some(env) {
|
|
for vec::each(supported_terms) |term| {
|
|
if term == env { return true; }
|
|
}
|
|
false
|
|
}
|
|
option::none { false }
|
|
};
|
|
}
|
|
|
|
fn set_color(writer: io::writer, first_char: u8, color: u8) {
|
|
assert (color < 16u8);
|
|
esc(writer);
|
|
let mut color = color;
|
|
if color >= 8u8 { writer.write(~['1' as u8, ';' as u8]); color -= 8u8; }
|
|
writer.write(~[first_char, ('0' as u8) + color, 'm' as u8]);
|
|
}
|
|
|
|
/// Set the foreground color
|
|
fn fg(writer: io::writer, color: u8) {
|
|
return set_color(writer, '3' as u8, color);
|
|
}
|
|
|
|
/// Set the background color
|
|
fn bg(writer: io::writer, color: u8) {
|
|
return set_color(writer, '4' as u8, color);
|
|
}
|
|
|
|
// Local Variables:
|
|
// fill-column: 78;
|
|
// indent-tabs-mode: nil
|
|
// c-basic-offset: 4
|
|
// buffer-file-coding-system: utf-8-unix
|
|
// End:
|