Packages
absinthe_utils
0.0.6
0.3.0
0.2.0-1
0.1.0
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1-main-fc1bcd7a9a3344c3b816f69996b44e81c7df841e
0.0.1-main-f3f7019eeb29e81e58b52a1904179d5651d5ce47
0.0.1-main-da68e7b37af94f1d1ff6ba949de0bbc71944a428
0.0.1-main-d5a2fe6243598a29dec4ddb349d351661463aec6
0.0.1-main-d255e08b6c32fe6449757ed94e6abba8bb9a31e7
0.0.1-main-b324c3236f3971cfc05577e796dca31477a46391
0.0.1-main-96f126a7c33a43fc8af80891c168df27cb6fe738
0.0.1-main-8a629d261d43f2b462d4b7e6bbd32fee4871d54b
0.0.1-main-72f3aaa55e5beeeb85467282d2d97db0eb3f4f43
0.0.1-main-6cbd7212b9c6abb25241183c5764ec6b58af0cfd
0.0.1-main-413ca15b56c2636667dc5f1b7898f81da11032b0
0.0.1-main-2bcf8f0401b45d43a9c4592f2311f2e2cfd9309c
0.0.1-main-02ce6a58b060743c268bd76061f9b1ef0d90354a
0.0.1-development
Collection of utils for absinthe
Current section
Files
Jump to
Current section
Files
lib/helpers/sorting.ex
defmodule AbsintheUtils.Helpers.Sorting do
@moduledoc """
Generic sorting utils.
"""
@doc """
Sorts an `unsorted_enumerable` based on `sorted_enumerable`.
Use mappers to specify getters for each element in the enumerable,
for example retrieving the id of a struct.
## Examples
iex> Sorting.sort_alike([:b, :c, :a], [:a, :b, :c])
[:a, :b, :c]
iex> Sorting.sort_alike([%{id: 1}, %{id: 2}], [2, 1], & &1.id)
[%{id: 2}, %{id: 1}]
"""
def sort_alike(
unsorted_enumerable,
sorted_enumerable,
unsorted_enumerable_mapper \\ & &1,
sorted_enumerable_mapper \\ & &1
) do
id_to_unsorted_element =
unsorted_enumerable
|> Map.new(fn element ->
{
unsorted_enumerable_mapper.(element),
element
}
end)
Enum.map(
sorted_enumerable,
fn element ->
Map.get(
id_to_unsorted_element,
sorted_enumerable_mapper.(element)
)
end
)
end
end