# **term_tools: Rich API for Colorizing Terminal**
[](https://opensource.org/licenses/MIT) [](https://crates.io/term_tools)
## **Overview**
term_tools is a Rust library that provides a rich API for colorizing terminal output. It allows you to create styled text strings with various colors, effects, and formatters.
## **Features**
- **Colors**: Supports 16 basic colors, 256 palette colors, and RGB colors.
- **Effects**: Supports slow blink and rapid blink.
- **Formatters**: Supports reset, bold, faint, italic, underline, and overline formatters.
- **Easy to use**: Simple and intuitive API for creating styled text strings.
## **Usage**
To use term_tools, simply add the following line to your `Cargo.toml` file:
```toml
[dependencies]
term_tools = "0.1.0"
```
Then, import the library in your Rust code:
```rust
use term_tools::styled;
```
Create a styled text string using the `styled` function:
```rust
let styled_text = styled("Hello, World!")
.red()
.bold()
.underline()
.paint();
println!("{}", styled_text);
```
## **Sequence of Styles**
The sequence of styles is important when using the `fg` and `bg` methods. These methods set the foreground and background colors, respectively, for all subsequent styles.
When you call `fg` or `bg`, all styles that come before it will be applied to the foreground or background, respectively.
Here's an example:
```rust
let styled_text = styled("Hello, World!")
.red() // applies to foreground
.fg() // sets foreground color to red
.blue() // applies to background
.bg() // sets background color to blue
.paint();
```
In this example, the `red` style is applied to the foreground, and the `blue` style is applied to the background.
if there is only one call of `fg` or `bg` whole colors applied that `PaintType` for example:
```rust
let styled_text = styled("Hello, World!")
.red() // red color
.blue() // blue color
.bg() // apply background color
.magenta() // magenta color
.paint();
```
in this example `paint` method will apply the background color of all colors.
if there is not any `fg` or `bg` call , the default paint type assume as `Foreground` for example:
```rust
let styled_text = styled("Hello, World!")
.red() // red color
.blue() // blue color
.paint();
```
in this example the `paint` method will use foreground color of the colors.
## **Examples**
Here are some examples of using term_tools:
- **Basic colors**:
```rust
let styled_text = styled("Hello, World!")
.red()
.paint();
println!("{}", styled_text);
```
- **RGB colors**:
```rust
let styled_text = styled("Hello, World!")
.rgb(255, 0, 0)
.paint();
println!("{}", styled_text);
```
- **Effects**:
```rust
let styled_text = styled("Hello, World!")
.bold()
.underline()
.paint();
println!("{}", styled_text);
```
- **Formatters**:
```rust
let styled_text = styled("Hello, World!")
.reset()
.bold()
.paint();
println!("{}", styled_text);
```
## **License**
term_tools is licensed under the MIT License.
## **Contributing**
Contributions are welcome If you'd like to contribute to term_tools, please fork the repository and submit a pull request.
I hope this helps Let me know if you'd like me to make any changes.