dahlia 2.0.0

A library allowing you to use Minecraft format codes in strings.
Documentation
# Dahlia.rs

A Rust implementation of [Dahlia](https://github.com/dahlia-lib/spec) — a simple
text formatting package, inspired by the game Minecraft.

Text is formatted similarly to in the game. With Dahlia, it is formatted
by typing a marker (`&` by default, but any other `char` is allowed) followed
by a format code and finally the text to be formatted.

## Usage

Add this to your `Cargo.toml`:

```toml
[dependencies]
dahlia = "2.0"
```

Import and use like this:

```rust
use dahlia::{Dahlia, dprintln};

fn main() {
  let dahlia = Dahlia::default().with_auto_depth();

  // Print "Hello, world!" in green bold with "world!" underlined
  let formatted = dahlia.convert("&2&lHello, &nworld!");

  // Convenience macro to print text with println! like syntax
  let name = "David";
  dprintln!(dahlia, "&2Hello, {name}!"); // green "Hello, David!"

  // Remove formatting from the text with `clean`
  assert_eq!(dahlia.clean("&2Hello, &lworld!"), "Hello, world!");

  // Use `_` to escape the marker
  assert_eq!(dahlia.convert("&_2Hello!"), "&2Hello!");
}
```

The code documentation is available at
[docs.rs](https://docs.rs/dahlia/1.1.0/dahlia), for more detailed information
about available formatting and other features, see the
[specification](https://github.com/dahlia-lib/spec).

Short summary:

### Color Format Codes

Each digit/letter corresponds to a hex value (dependent on the color depth). The
coloring can be applied to the background if a `~` is inserted between `&` and
the code.

| Color | 3-bit   | 8-bit   | 24-bit  |
| ----- | ------- | ------- | ------- |
| `0`   | #000000 | #000000 | #000000 |
| `1`   | #000080 | #0000af | #0000aa |
| `2`   | #008000 | #00af00 | #00aa00 |
| `3`   | #008080 | #00afaf | #00aaaa |
| `4`   | #800000 | #af0000 | #aa0000 |
| `5`   | #800080 | #af00af | #aa00aa |
| `6`   | #808000 | #ffaf00 | #ffaa00 |
| `7`   | #c0c0c0 | #a8a8a8 | #aaaaaa |
| `8`   | #000000 | #585858 | #555555 |
| `9`   | #000080 | #afafff | #5555ff |
| `a`   | #008000 | #5fff5f | #55ff55 |
| `b`   | #000080 | #5fffff | #55ffff |
| `c`   | #800000 | #ff5f5f | #ff5555 |
| `d`   | #800080 | #ff5fff | #ff55ff |
| `e`   | #808000 | #ffff5f | #ffff55 |
| `f`   | #c0c0c0 | #ffffff | #ffffff |
| `g`   | #808000 | #d7d700 | #ddd605 |

### Formatting Codes

| Code | Result               |
| ---- | -------------------- |
| `l`  | Bold                 |
| `m`  | Strikethrough        |
| `n`  | Underline            |
| `o`  | Italic               |
| `R`  | Reset all formatting |
| `rf` | Reset foreground     |
| `rb` | Reset background     |
| `rc` | Reset color          |
| `rh` | Reset hidden         |
| `ri` | Reset inverse        |
| `rj` | Reset dim            |
| `rk` | Reset blinking       |
| `rl` | Reset bold           |
| `rm` | Reset strikethrough  |
| `rn` | Reset underline      |
| `ro` | Reset italic         |

### Custom Colors

To specify colors by hex code follow the marker with CSS-like hex color syntax.

- Foreground: `&#xxx;` or `&#xxxxxx;`
- Background: `&~#xxx;` or `&~#xxxxxx;`

_Note: `x` here represents a hex digit._

## License

dahlia-rs is licensed under the MIT License.