README.md

# OrdMap

[![Hex.pm](https://img.shields.io/hexpm/v/ord_map.svg?style=flat-square)](https://hex.pm/packages/ord_map)

**Ordered map for Elixir lang**

- A set of functions and a macro for working with **ordered maps**.

- An **ordered map** is a *struct* with a *list of key-value tuples* 
where *key* and *value* can be any value.

- It can be serialized to JSON with [Poison](https://github.com/devinus/poison) - you need to add [OrdMap Poison encoder](https://github.com/MartinKavik/ord_map_encoder_poison) to your project dependencies. 

## Usage
```elixir

iex> o%{"foo" => "bar"}
%OrdMap{tuples: [{"foo", "bar"}]}

iex> my_ord_map = OrdMap.new([{"foo", 1}, {"bar", 2}])
iex> OrdMap.get(my_ord_map, "bar")
2

iex> my_ord_map = o%{"foo" => o(%{nested: "something"}), "bar" => "two"}
iex> my_ord_map["foo"][:nested]
"something"

iex> my_ord_map = o%{"foo" => 1, "bar" => 2}
iex> Enum.map my_ord_map, fn {key, value} -> {key, value + 1} end
[{"foo", 2}, {"bar", 3}]

```

## Installation

First, add OrdMap to your mix.exs dependencies:

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

Then, update your dependencies:

```sh-session
$ mix deps.get
```

## License

OrdMap is released under MIT (see [`LICENSE`](LICENSE)).