Attributes

GitHub Workflow Status Coveralls Hex pm Hex.pm

Manipulate complex attributes on modules.

Installation

The package can be installed by adding attributes to your list of dependencies in mix.exs:

def deps do
  [
    {:attributes, "~> 0.4.0"}
  ]
end

Documentation

Full documentation can be found at https://hexdocs.pm/attributes.

Usage

Attributes offers utility functions to manipulate complex attributes on modules.

A typical usage could be inside macros that need to enrich modules before their compilation. You can set, get, update or delete attributes' tree.

defmodule MyModule do
  Attributes.set(__MODULE__, [:path, :to, :attr], :value)
end

Attributes supports nested maps and keyword. The previous assignment could be rewritten as follow:

Attributes.set(__MODULE__, [:path], [to: [attr: :value]])
Attributes.set(__MODULE__, [:path], %{to: %{attr: :value}})

After defining an attribute, you can obtain its value using Attributes.get/2, Attributes.get/3 or Attributes.get!/2 methods.

iex> Attributes.get(MyModule, [:path, :to, :attr])
iex> :value
iex> Attributes.get(MyModule, [:path, :to])
iex> [attr: :value]