Igniter.Code.Keyword (igniter v0.6.14)
View SourceUtilities for working with keyword.
Summary
Functions
Moves the zipper to the value of key
in a keyword list.
Returns true if the node is a nested keyword list containing a value at the given path.
Puts into nested keyword lists represented by path
Puts a value at a path into a keyword list, calling updater
on the zipper at the value if the key is already present.
Removes a key from a keyword list if present. Returns :error
only if the node is not a list
Sets a key in a keyword list to a value.
Functions
@spec get_key(Sourceror.Zipper.t(), atom()) :: {:ok, Sourceror.Zipper.t()} | :error
Moves the zipper to the value of key
in a keyword list.
@spec keyword_has_path?(Sourceror.Zipper.t(), [atom()]) :: boolean()
Returns true if the node is a nested keyword list containing a value at the given path.
Puts into nested keyword lists represented by path
@spec put_in_keyword( Sourceror.Zipper.t(), [atom()], term(), (Sourceror.Zipper.t() -> {:ok, Sourceror.Zipper.t()} | :error | {:error, String.t()} | {:warning, String.t()}) | nil ) :: {:ok, Sourceror.Zipper.t()} | :error | {:error, String.t()} | {:warning, String.t()}
Puts a value at a path into a keyword list, calling updater
on the zipper at the value if the key is already present.
Navigates through nested keyword lists following the given path
(list of atoms).
If the full path doesn't exist, it creates the necessary nested structure.
If the path exists, it calls the updater
function with the zipper at the existing value.
The updater
function can return:
{:ok, zipper}
- Replace the existing value with the updated zipper- anything else, which is returned untouched
This function preserves any errors or warnings returned by the updater function, passing them through unchanged.
@spec remove_keyword_key(Sourceror.Zipper.t(), atom()) :: {:ok, Sourceror.Zipper.t()} | :error
Removes a key from a keyword list if present. Returns :error
only if the node is not a list
@spec set_keyword_key( Sourceror.Zipper.t(), atom(), term(), (Sourceror.Zipper.t() -> {:ok, Sourceror.Zipper.t()} | term()) | nil ) :: {:ok, Sourceror.Zipper.t()} | term()
Sets a key in a keyword list to a value.
If the key already exists, calls the updater
function with the zipper at the existing value.
If the key doesn't exist, sets it to the given value
.
The updater
function can return:
{:ok, zipper}
- Replace the existing value with the updated zipper- anything else - which is returned untouched
This function preserves any errors or warnings returned by the updater function, passing them through unchanged.