README.md

# Excribe

Excribe is a simple text formatting utility for Elixir.

Excribe helps you format the text in paragraph-like form. It supports word
wrapping, indentation and text alignment.

## Installation

This package is available in [Hex](https://hex.pm/packages/excribe). Simply add
`:excribe` to your list of deps in `mix.exs`.

```elixir
def deps do
  [{:excribe, "~> 0.1.0"}]
end
```

## Examples

Read the [documentation](https://hexdocs.pm/excribe) for detailed explanation
of functions provided by Excribe.

### Simple Word Wrapping

```
# lipsum = "Lorem ipsum dolor ..."

iex> lipsum |> Excribe.format(width: 60) |> IO.puts
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Mauris id eleifend risus. Aenean ut vestibulum velit.
Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas. Maecenas a suscipit
purus, in tincidunt nisl. Proin dignissim ligula sit amet
felis ultricies, nec accumsan orci convallis.
:ok
```

### Indentation

```
iex> lipsum |> Excribe.format(width: 60, indent: 4, hanging: 8) |> IO.puts
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        Mauris id eleifend risus. Aenean ut vestibulum
        velit. Pellentesque habitant morbi tristique
        senectus et netus et malesuada fames ac turpis
        egestas. Maecenas a suscipit purus, in tincidunt
        nisl. Proin dignissim ligula sit amet felis
        ultricies, nec accumsan orci convallis.
:ok
```

### Text Alignment

```
iex> lipsum |> Excribe.format(width: 60, align: :right) |> IO.puts
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
       Mauris id eleifend risus. Aenean ut vestibulum velit.
  Pellentesque habitant morbi tristique senectus et netus et
      malesuada fames ac turpis egestas. Maecenas a suscipit
   purus, in tincidunt nisl. Proin dignissim ligula sit amet
               felis ultricies, nec accumsan orci convallis.
:ok

iex> lipsum |> Excribe.format(width: 60, align: :justify) |> IO.puts
Lorem ipsum dolor sit  amet,  consectetur  adipiscing  elit.
Mauris  id  eleifend  risus.  Aenean  ut  vestibulum  velit.
Pellentesque habitant morbi tristique senectus et  netus  et
malesuada fames  ac  turpis  egestas.  Maecenas  a  suscipit
purus, in tincidunt nisl. Proin dignissim  ligula  sit  amet
felis ultricies, nec accumsan orci convallis.
:ok
```

## TODO

* Support multi-line texts
* Support `ansilist` (from `IO.ANSI`)

## LICENSE

Excribe is licensed under the terms of The MIT License. Check `LICENSE` file for
the full text of The MIT License.