View Source Moar.Atom (Moar v1.54.0)

Atom-related functions.

Summary

Functions

Given an atom, returns the atom. Given a string, converts it into an atom, converting non-alphanumeric characters into underscores (via Moar.String.slug/2).

Given a list of strings, returns :ok if all values have a corresponding atom that already exists. Otherwise, it returns an error tuple with a list of strings that don't have corresponding atoms.

Given a string, returns true if a corresponding atom has been previously defined. Otherwise, returns false.

Converts a string to an atom (via String.to_atom/1), and returns atoms unchanged.

Converts a string to an existing atom (via String.to_existing_atom/1), and returns atoms unchanged.

Converts an atom to a string (via Atom.to_string/1), and returns strings unchanged.

Functions

@spec atomize(atom() | binary()) :: atom()

Given an atom, returns the atom. Given a string, converts it into an atom, converting non-alphanumeric characters into underscores (via Moar.String.slug/2).

Examples

iex> Moar.Atom.atomize(:my_atom)
:my_atom

iex> Moar.Atom.atomize("my-atom")
:my_atom
Link to this function

ensure_existing_atoms(values)

View Source
@spec ensure_existing_atoms([atom() | binary()]) :: :ok | {:error, [binary()]}

Given a list of strings, returns :ok if all values have a corresponding atom that already exists. Otherwise, it returns an error tuple with a list of strings that don't have corresponding atoms.

Any atom included in the argument will be considered an existing atom.

Examples

iex> :existing_atom
iex> Moar.Atom.ensure_existing_atoms(["existing_atom", :another_existing_atom])
:ok

iex> :existing_atom
iex> Moar.Atom.ensure_existing_atoms(["existing_atom", :another_existing_atom, "some_nonexisting_atom"])
{:error, ["some_nonexisting_atom"]}
@spec existing_atom?(atom() | binary()) :: boolean()

Given a string, returns true if a corresponding atom has been previously defined. Otherwise, returns false.

Given an atom, returns true.

Examples

iex> :existing_atom
iex> Moar.Atom.existing_atom?("existing_atom")
true

iex> Moar.Atom.existing_atom?(:another_existing_atom)
true

iex> Moar.Atom.existing_atom?("some_nonexisting_atom")
false
@spec from_string(atom() | binary()) :: atom()

Converts a string to an atom (via String.to_atom/1), and returns atoms unchanged.

Useful when you aren't sure ahead of time whether you have a string or an atom.

Examples

iex> Moar.Atom.from_string("foo")
:foo

iex> Moar.Atom.from_string(:bar)
:bar

iex> Moar.Atom.from_string(nil)
** (ArgumentError) Unable to convert nil into an atom
@spec to_existing_atom(atom() | binary()) :: atom()

Converts a string to an existing atom (via String.to_existing_atom/1), and returns atoms unchanged.

Useful when you aren't sure ahead of time whether you have a string or an atom.

Examples

iex> Moar.Atom.to_existing_atom("foo")
:foo

iex> assert_raise ArgumentError, fn ->
...>   Moar.Atom.to_existing_atom("sadfasfsfasf")
...> end

iex> Moar.Atom.to_existing_atom(:baz)
:baz

iex> Moar.Atom.to_existing_atom(nil)
nil
@spec to_string(atom() | binary()) :: binary()

Converts an atom to a string (via Atom.to_string/1), and returns strings unchanged.

Useful when you aren't sure ahead of time whether you have a string or an atom.

Examples

iex> Moar.Atom.to_string("foo")
"foo"

iex> Moar.Atom.to_string(:bar)
"bar"

iex> Moar.Atom.to_string(nil)
** (ArgumentError) Unable to convert nil into a string