1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# yansi
[![Build Status](https://travis-ci.org/SergioBenitez/yansi.svg?branch=master)](https://travis-ci.org/SergioBenitez/yansi)
[![Current Crates.io Version](https://img.shields.io/crates/v/yansi.svg)](https://crates.io/crates/yansi)
[![Documentation](https://docs.rs/yansi/badge.svg)](https://docs.rs/yansi)
A dead simple ANSI terminal color painting library for Rust.
```rust
use yansi::Paint;
print!("{} light, {} light!", Paint::green("Green"), Paint::red("red").underline());
```
See the [documentation](https://docs.rs/yansi/) for more.
# Why?
Several terminal coloring libraries exist ([`ansi_term`], [`colored`],
[`term_painter`], to name a few), begging the question: why yet another? Here
are a few reasons:
* This library is _much_ simpler: there are three types!
* Unlike [`ansi_term`] or [`colored`], _any_ type implementing `Display`
or `Debug` can be stylized, not only strings.
* Styling can be enabled and disabled globally, on the fly.
* Arbitrary items can be [_masked_] for selective disabling.
* Styling can [_wrap_] any arbitrarily styled item.
* Typically only one type needs to be imported: `Paint`.
* Zero dependencies. It really is simple.
* The name `yansi` is pretty short.
All that being said, this library borrows API ideas from the three libraries as
well as implementation details from [`ansi_term`].
[`ansi_term`]: https://crates.io/crates/ansi_term
[`colored`]: https://crates.io/crates/colored
[`term_painter`]: https://crates.io/crates/term-painter
[_masked_]: https://docs.rs/yansi/#masking
[_wrap_]: https://docs.rs/yansi/#wrapping
## License
`yansi` is licensed under either of the following, at your option:
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT License ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
|