destructure v0.1.0 Destructure

Provides helpers for destructuring Elixir data structures. See the d/1 macro for more information.

Summary

Macros

Easy destructuring of maps and keyword lists, with atom keys only. String keys are not supported because Elixir raises a SyntaxError on syntax like %{"name"}

Macros

d(arg)

Easy destructuring of maps and keyword lists, with atom keys only. String keys are not supported because Elixir raises a SyntaxError on syntax like %{"name"}.

Examples

The macro can be used in simple match statements:

iex> d(%{name}) = %{name: "Joe"}
...> name
"Joe"

Or in case/for/with statements.

iex> case %{name: "Mike"} do
...>   d%{name} ->
...>     name
...> end
"Mike"

It can be used inside a complex match:

iex> %{body: d%{name}} = %{body: %{name: "Robert"}}
...> name
"Robert"

With multiple keys:

iex> d(%{first, last}) = %{first: "Daniel", last: "Berkompas"}
...> {first, last}
{"Daniel", "Berkompas"}

For keyword lists:

iex> d({name}) = [name: "Daniel"]
...> name
"Daniel"

With multiple keys:

iex> d({first, last}) = [first: "Daniel", last: "Berkompas"]
...> {first, last}
{"Daniel", "Berkompas"}

And in function definitions:

iex> defmodule Test do
...>   import Destructure
...>   def test(d%{name}) do
...>     name
...>   end
...> end
...> Test.test(%{name: "Daniel"})
"Daniel"