Igniter.Code.List (igniter v0.7.0)

View Source

Utilities for working with lists.

Summary

Functions

Appends quoted to the list unless it is already present, determined by equality_pred.

Appends quoted to the list

Moves to the list item matching the given predicate, assuming you are currently inside the list

Finds the index of the first list item that satisfies pred

Returns true if the zipper is at a list literal

Applies the given function to every element of the list. The passed function must return {:ok, zipper} or :error When map returns, the Zipper will point to the final element of the list.

Moves to the list item matching the given predicate

Prepends quoted to the list unless it is already present, determined by equality_pred.

Prepends quoted to the list

Removes the item at the given index, returning :error if nothing is at that index

Types

equality_pred()

@type equality_pred() :: (Sourceror.Zipper.t(), Macro.t() -> boolean())

Functions

append_new_to_list(zipper, quoted, equality_pred \\ &Common.nodes_equal?/2)

@spec append_new_to_list(Sourceror.Zipper.t(), quoted :: Macro.t(), equality_pred()) ::
  {:ok, Sourceror.Zipper.t()} | :error

Appends quoted to the list unless it is already present, determined by equality_pred.

append_to_list(zipper, quoted)

@spec append_to_list(Sourceror.Zipper.t(), quoted :: Macro.t()) ::
  {:ok, Sourceror.Zipper.t()} | :error

Appends quoted to the list

do_move_to_list_item(zipper, pred)

Moves to the list item matching the given predicate, assuming you are currently inside the list

find_list_item_index(zipper, pred)

@spec find_list_item_index(Sourceror.Zipper.t(), (Sourceror.Zipper.t() -> boolean())) ::
  integer() | nil

Finds the index of the first list item that satisfies pred

list?(zipper)

@spec list?(Sourceror.Zipper.t()) :: boolean()

Returns true if the zipper is at a list literal

map(zipper, fun)

@spec map(Sourceror.Zipper.t(), (Sourceror.Zipper.t() -> {:ok, Sourceror.Zipper.t()})) ::
  {:ok, Sourceror.Zipper.t()} | :error

Applies the given function to every element of the list. The passed function must return {:ok, zipper} or :error When map returns, the Zipper will point to the final element of the list.

move_to_list_item(zipper, pred)

@spec move_to_list_item(Sourceror.Zipper.t(), (Sourceror.Zipper.t() -> boolean())) ::
  {:ok, Sourceror.Zipper.t()} | :error

Moves to the list item matching the given predicate

prepend_new_to_list(zipper, quoted, equality_pred \\ &Common.nodes_equal?/2)

@spec prepend_new_to_list(Sourceror.Zipper.t(), quoted :: Macro.t(), equality_pred()) ::
  {:ok, Sourceror.Zipper.t()} | :error

Prepends quoted to the list unless it is already present, determined by equality_pred.

prepend_to_list(zipper, quoted)

@spec prepend_to_list(Sourceror.Zipper.t(), quoted :: Macro.t()) ::
  {:ok, Sourceror.Zipper.t()} | :error

Prepends quoted to the list

remove_from_list(zipper, predicate)

@spec remove_from_list(
  Sourceror.Zipper.t(),
  predicate :: (Sourceror.Zipper.t() -> boolean())
) ::
  {:ok, Sourceror.Zipper.t()} | :error

remove_index(zipper, index)

@spec remove_index(Sourceror.Zipper.t(), index :: non_neg_integer()) ::
  {:ok, Sourceror.Zipper.t()} | :error

Removes the item at the given index, returning :error if nothing is at that index

replace_in_list(zipper, predicate, value)

@spec replace_in_list(
  Sourceror.Zipper.t(),
  predicate :: (Sourceror.Zipper.t() -> boolean()),
  term :: any()
) :: {:ok, Sourceror.Zipper.t()} | :error