# CustomBase
[](https://hex.pm/packages/custom_base)[](https://github.com/igas/custom_base/blob/master/LICENSE)[](https://travis-ci.org/igas/custom_base)[](https://github.com/igas/custom_base/issues)[](https://hex.pm/packages/custom_base)[](https://gratipay.com/igas/)
CustomBase allow you to make custom base conversion in Elixir.
## Installation
Add `{ :custom_base, "~> 0.2" }` to `deps` function in your `mix.exs` file.
After you are done, run `mix deps.get` in your shell to fetch and compile CustomBase.
## Example
Lets make `Base12` module with conversion described below.
| Value | Encoding |
|------:|---------:|
|      0|         0|
|      1|         1|
|      2|         2|
|      3|         3|
|      4|         4|
|      5|         5|
|      6|         6|
|      7|         7|
|      8|         8|
|      9|         9|
|     10|         A|
|     11|         B|
Add macro to your module:
```elixir
defmodule Base12 do
  use CustomBase, '0123456789AB'
end
```
Now your module have 2 functions `encode/1` and `decode/1`:
```
iex> Base12.encode(9)
"9"
iex> Base12.encode(10)
"A"
iex> Base12.encode(11)
"B"
iex> Base12.encode(12)
"10"
iex> Base12.decode("16")
18
iex> Base12.decode("AB")
131
```
## Specs & Docs
All specs included by this library, if you want to provide your documentation,
add it after `use` call, like this:
```
defmodule Base12 do
  use CustomBase, '0123456789AB'
  @moduledoc """
  Your module docs.
  """
  @doc """
  Documentation for encode/1.
  """
  def encode(integer)
  @doc """
  Documentation for decode/1.
  """
  def decode(binary)
  @doc """
  Documentation for decode!/1.
  """
  def decode!(binary)
end
```
## [License](https://github.com/igas/custom_base/blob/master/LICENSE)
Released under the MIT License.