Localize.Utils.Enum (Localize v0.32.0)

Copy Markdown View Source

Enumerable utility functions not provided in the standard library.

Provides reduce with lookahead and list combination operations.

Summary

Functions

Combines list elements into progressively concatenated prefix strings.

Reduces a list with lookahead by passing both the current element and the remaining tail to the reducing function.

Functions

combine_list(list)

Combines list elements into progressively concatenated prefix strings.

Each element in the result is the concatenation of all preceding elements joined by underscores.

Arguments

  • list — a list of elements that can be converted to strings.

Returns

  • A list of progressively combined strings.

Examples

iex> Localize.Utils.Enum.combine_list([:a, :b, :c])
["a", "a_b", "a_b_c"]

reduce_peeking(list, accumulator, function)

Reduces a list with lookahead by passing both the current element and the remaining tail to the reducing function.

The reducing function receives three arguments: the current element, the remaining tail of the list, and the accumulator. It should return a tagged tuple following the Enumerable protocol conventions: {:cont, acc}, {:halt, acc}, or {:suspend, acc}.

Arguments

  • list — the list to reduce.

  • accumulator — the initial accumulator value, or a tagged tuple.

  • function — a function of arity 3: (element, tail, accumulator).

Returns

  • The final accumulator value.

Examples

iex> Localize.Utils.Enum.reduce_peeking([1, 2, 3], [], fn head, tail, acc ->
...>   {:cont, [{head, length(tail)} | acc]}
...> end)
[{3, 0}, {2, 1}, {1, 2}]