# `Moar.IO`
[🔗](https://github.com/synchronal/moar/blob/main/lib/io.ex#L1)

IO-related functions

# `cformat`

```elixir
@spec cformat(String.t(), boolean()) :: iolist()
```

Accepts a string with special formatting syntax and converts it into an `iolist` that contains
ANSI color and formatting codes. The second parameter, `emit?` can be used to enable or disable
formatting; it defaults to the value of `IO.ANSI.enabled?/0`.

The formatting syntax looks like:

    "My {green: hovercraft} is {red italic: full of eels}!"

The formatting options are the ANSI codes that are allowed to be sent to `IO.ANSI.format/2`.
There doesn't seem to be a list of valid codes, but the names of most of the zero-arity functions
in `IO.ANSI` can be used. The order of the formatting options is not important.

The resulting iolist can be used anywhere that iodata is expected. This module's `cstring/2` function
will take the same input and return a string, and `cputs/2` will take the same input and print it to
stdout.

# `cputs`

```elixir
@spec cputs(String.t(), boolean()) :: :ok
```

Formats a string and prints it to stdout. See `cformat/2` for details.

# `cstring`

```elixir
@spec cstring(String.t(), boolean()) :: String.t()
```

Formats a string and returns the formatted string. See `cformat/2` for details.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
