A tiny Elixir drop for safely getting values from nested maps.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
config
lib
test
.formatter.exs
.gitignore
README.md
mix.exs
mix.lock

README.md

Unpack

This tiny Elixir drop lets you reach in and unpack any value from a nested map. Returns nil for bad or missing keys, unloaded associations, or empty maps. Unpack can also take a 3rd parameter to return a default value when key not found.

Examples

struct = %{player: %{game: %{id: "game-id"}}}
Unpack.get(struct, [:player, :game, :id])
=> "game-id"

struct = %{player: %Ecto.Association.NotLoaded{}}
Unpack.get(struct, [:player, :game, :id])
=> nil

map = %{player: %{}}
Unpack.get(map, [:player, :wrong_key], "eh!")
=> "eh!"

Docs can be found at https://hexdocs.pm/unpack.

Installation

Available as Hex package, the package can be installed by adding unpack to your list of dependencies in mix.exs:

def deps do
  [
    {:unpack, "~> 0.1.5"}
  ]
end

Contributing

Ideas or improvements? Please submit a Github issue. To submit a PR, please fork this repo first.