CustomBase allow you to make custom base conversion in Elixir.
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.
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:
defmodule Base12 do
use CustomBase, '0123456789AB'
endNow 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
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
Copyright (c) 2015 Igor Kapkov
This library is MIT licensed. See the LICENSE for details.