https://github.com/martinkavik/ord_map
Ordered map for Elixir lang
https://github.com/martinkavik/ord_map
elxiir map ordered package
Last synced: 10 months ago
JSON representation
Ordered map for Elixir lang
- Host: GitHub
- URL: https://github.com/martinkavik/ord_map
- Owner: MartinKavik
- License: mit
- Created: 2017-11-13T21:53:14.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2017-11-14T20:53:16.000Z (about 8 years ago)
- Last Synced: 2024-05-01T15:59:44.952Z (over 1 year ago)
- Topics: elxiir, map, ordered, package
- Language: Elixir
- Homepage: https://hexdocs.pm/ord_map
- Size: 7.81 KB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# OrdMap
[](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)).