View Source Moar.Enum (Moar v1.62.0)
Enum-related functions.
Summary
Functions
Like Enum.at/3
but raises if index
is out of bounds.
Removes nil elements from enum
.
Removes blank elements (as determined by Moar.Term.blank?1
) from enum
.
Returns the indices of elements
in enum
, using fun
for comparisons (defaulting to Kernel.==/2
)
Returns the indices of elements
in enum
, raising if any member of elements
is not found.
Returns the first item of enum
, or raises if it is empty.
Converts an enum into a map of maps indexed by the return value of index_fun
.
See also the similar map-specific Moar.Map.index_by/2
.
Like Enum.into
but accepts nil
as the first argument
Deprecated in favor of map_or_keyword?/1
.
Deprecated in favor of map_or_nonempty_keyword?/1
.
Sorts enum
case-insensitively. Uses Enum.sort_by/3
under the hood.
Sorts enum
case-insensitively by mapper
function. Uses Enum.sort_by/3
under the hood.
Converts a list of lists to a list of maps with the given keys. The keys can be a list, or can be :first_list
which uses the first list in list_of_lists
as the keys and the remaining lists in list_of_lists
as the values.
Returns true if the value is a map or a keyword list. This uses standard Elixir functions for determining
if a term is a map or a keyword, and therefore counts an empty list as a keyword list. See also
map_or_nonempty_keyword?/1
.
Like map_or_keyword?/1
but returns false if the term is an empty list.
Returns a list of elements at the given indices, in the given order. If :all
is given instead of a list of indices,
the entire enum is returned.
Returns :test_id
fields from enumerable
.
Returns :tid
fields from enumerable
.
Types
Functions
Like Enum.at/3
but raises if index
is out of bounds.
Removes nil elements from enum
.
Removes blank elements (as determined by Moar.Term.blank?1
) from enum
.
Returns the indices of elements
in enum
, using fun
for comparisons (defaulting to Kernel.==/2
)
iex> Moar.Enum.find_indices(~w[apple banana cherry], ~w[cherry apple])
[2, 0]
iex> Moar.Enum.find_indices(~w[apple banana cherry], ~w[CHERRY APPLE], fn a, b ->
...> String.downcase(a) == String.downcase(b)
...> end)
[2, 0]
Returns the indices of elements
in enum
, raising if any member of elements
is not found.
iex> Moar.Enum.find_indices!(~w[apple banana cherry], ~w[cherry apple])
[2, 0]
iex> Moar.Enum.find_indices!(~w[apple banana], ~w[cherry apple])
** (RuntimeError) Element "cherry" not present in:
["apple", "banana"]
Returns the first item of enum
, or raises if it is empty.
Converts an enum into a map of maps indexed by the return value of index_fun
.
See also the similar map-specific Moar.Map.index_by/2
.
iex> Moar.Enum.index_by([%{name: "Alice", tid: "alice"}, %{name: "Billy", tid: "billy"}], & &1.tid)
%{"alice" => %{name: "Alice", tid: "alice"}, "billy" => %{name: "Billy", tid: "billy"}}
Like Enum.into
but accepts nil
as the first argument
Deprecated in favor of map_or_keyword?/1
.
Deprecated in favor of map_or_nonempty_keyword?/1
.
Sorts enum
case-insensitively. Uses Enum.sort_by/3
under the hood.
Sorts enum
case-insensitively by mapper
function. Uses Enum.sort_by/3
under the hood.
Converts a list of lists to a list of maps with the given keys. The keys can be a list, or can be :first_list
which uses the first list in list_of_lists
as the keys and the remaining lists in list_of_lists
as the values.
iex> Moar.Enum.lists_to_maps([[1, 2], [3, 4]], ["a", "b"])
[%{"a" => 1, "b" => 2}, %{"a" => 3, "b" => 4}]
iex> csv = [["a", "b"], [1, 2], [3, 4]]
iex> [headers | rows] = csv
iex> Moar.Enum.lists_to_maps(rows, headers)
[%{"a" => 1, "b" => 2}, %{"a" => 3, "b" => 4}]
iex> csv = [["a", "b"], [1, 2], [3, 4]]
iex> Moar.Enum.lists_to_maps(csv, :first_list)
[%{"a" => 1, "b" => 2}, %{"a" => 3, "b" => 4}]
Returns true if the value is a map or a keyword list. This uses standard Elixir functions for determining
if a term is a map or a keyword, and therefore counts an empty list as a keyword list. See also
map_or_nonempty_keyword?/1
.
This cannot be used as a guard because it uses Keyword.keyword?
under the hood. Also, because of that,
it might scan an entire list to see if it's a keyword list, so it might be expensive.
Like map_or_keyword?/1
but returns false if the term is an empty list.
Returns a list of elements at the given indices, in the given order. If :all
is given instead of a list of indices,
the entire enum is returned.
iex> Moar.Enum.take_at(["A", "B", "C"], [0, 2])
["A", "C"]
iex> Moar.Enum.take_at(["A", "B", "C"], [2, 0])
["C", "A"]
iex> Moar.Enum.take_at(["A", "B", "C"], :all)
["A", "B", "C"]
@spec test_ids(Enum.t(), [test_ids_opts()]) :: list()
Returns :test_id
fields from enumerable
.
This unusual function exists because the authors of Moar use test_ids extensively in tests.
See also tids/2
.
Returns :tid
fields from enumerable
.
This unusual function exists because the authors of Moar use tids (test IDs) extensively in tests.
See also test_ids/2
.