README.md

# Recordlocator for Elixir

**An Elixir module to encode integers into a short and easy to read string and decode the strings back to the initial numbers**

This is the Elixir equivalent to [go-recordlocator](https://github.com/jakoubek/go-recordlocator), [php-recordlocator](https://github.com/jakoubek/php-recordlocator), [lua-recordlocator](https://github.com/jakoubek/lua-recordlocator), [postgresql-recordlocator](https://github.com/jakoubek/postgresql-recordlocator) and [sqlanywhere-recordlocator](https://github.com/jakoubek/sqlanywhere-recordlocator).

A RecordLocator is an alphanumerical string that represents an integer. This package encodes integers to RecordLocators and decodes RecordLocators back to integers.

A RecordLocator is shorter than the corresponding integer and easier to read and memorize. You can use it to encode autoincrement primary keys from an database into an human-readable representation for your users.

## Examples

- The integer 5,325 encodes to the RecordLocator 78G.
- The integer 3,512,345 encodes to the RecordLocator 5E82T.

Both RecordLocators are shorter than their integer equivalent. You can encode more than 33.5 million integers in an 5-char RecordLocator: the largest 5-char RecordLocator, ZZZZZ, represents the integer 33,554,431.

With 6 chars you can encode integers up to more than 1 billion.

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `recordlocator` to your list of dependencies in `mix.exs`:

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

Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at <https://hexdocs.pm/recordlocator>.





## Usage

Encoding integers to recordlocators:

```elixir
{:ok, rl} = Recordlocator.encode(5325)

rl
# => 78G
```

Decoding recordlocators back into the integer values:

```elixir
{:ok, number} = Recordlocator.decode("78G")

number
# => 5325
```