View Source Attrs

Unifying atom and string key handling for user data (attrs maps) given to Ecto's cast function

attrs-get-attrs-key-default

Attrs.get(attrs, key, default)

Attrs.get(%{foo: 1}, :foo) == 1
Attrs.get(%{"foo" => 1}, :foo) == 1
Attrs.get(%{foo: 1}, :bar, 2) == 2

attrs-put-attrs-key-value

Attrs.put(attrs, key, value)

Attrs.put(%{"foo" => 1}, :bar, 2) == %{"foo" => 1, "bar" => 2}
Attrs.put(%{foo: 1}, :bar, 2) == %{foo: 1, bar: 2}
Attrs.put(%{}, :bar, 2) == %{bar: 2}

attrs-merge-attrs1-attrs2

Attrs.merge(attrs1, attrs2)

Attrs.merge(%{"foo" => 1}, %{bar: 2}) == %{"foo" => 1, "bar" => 2}
Attrs.merge(%{"foo" => 1}, %{"bar" => 2}) == %{"foo" => 1, "bar" => 2}
Attrs.merge(%{foo: 1}, %{bar: 2}) == %{foo: 1, bar: 2}

attrs-normalize_keys-attrs

Attrs.normalize_keys(attrs)

Attrs.normalize_keys(%{"foo" => 1, bar: 2}) == %{"foo" => 1, "bar" => 2}
Attrs.normalize_keys(%{foo: 1, bar: 2}) == %{foo: 1, bar: 2}
Attrs.normalize_keys(%{"foo" => 1, "bar" => 2}) == %{"foo" => 1, "bar" => 2}