Packages
map_sorter
0.2.21
0.2.70
0.2.69
0.2.68
0.2.67
0.2.66
0.2.65
0.2.64
0.2.63
0.2.62
0.2.61
0.2.60
0.2.59
0.2.58
0.2.57
0.2.56
0.2.55
0.2.54
0.2.53
0.2.52
0.2.51
0.2.50
0.2.49
0.2.48
0.2.47
0.2.46
0.2.45
0.2.44
0.2.42
0.2.41
0.2.40
0.2.39
0.2.38
0.2.37
0.2.36
0.2.35
0.2.34
0.2.33
0.2.32
0.2.31
0.2.30
0.2.29
0.2.28
0.2.27
0.2.26
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Sorts a list of maps per a list of sort specs.
Current section
Files
Jump to
Current section
Files
lib/map_sorter/ie.ex
defmodule MapSorter.IE do
@moduledoc false
# Functions for iex session...
#
# Examples:
#
# use MapSorter.IE
# to_quoted([asc: :dob, desc: :likes]) # check for :comparable
# people()
# sort(people(), asc: :dob, desc: :likes)
# people_as_keywords()
# sort(people_as_keywords(), asc: :dob, desc: :likes)
#
# 1. Change :sorting_on_structs? to true in config/config.exs
# 2. Recompile
# 3. Retest above
# 4. Change :sorting_on_structs? back to false (or comment out)
#
# to_comp_fun([:dob, desc: :likes])
# to_quoted([:dob, desc: :likes])
# to_quoted(quote do: Tuple.to_list({:dob, {:desc, :likes}}))
# to_quoted({:dob, :likes})
# to_quoted({:dob, :likes, :name})
# to_quoted(%{asc: :dob, desc: :likes, ask: :name})
# to_quoted(3.1416)
# adapt_string("&1[~D[2017-11-02]] < ...", true)
# adapt_string("&1[~D[2017-11-02]] < ...", false)
alias MapSorter.SortSpec
require MapSorter
@people [
%{name: "Mike", likes: "ski, arts", dob: ~D[1992-04-15]},
%{name: "Mary", likes: "travels" , dob: ~D[1992-04-15]},
%{name: "Bill", likes: "karate" , dob: ~D[1977-08-28]},
%{name: "Joe" , likes: "boxing" , dob: ~D[1977-08-28]},
%{name: "Jill", likes: "cooking" , dob: ~D[1976-09-28]}
]
defmacro __using__(_options) do
quote do
import MapSorter.IE
alias MapSorter.SortSpec
require MapSorter
:ok
end
end
def people(), do: @people
def people_as_keywords(), do: Enum.map(@people, &Keyword.new/1)
# Delegation only works with functions...
def sort(maps, sort_specs), do: MapSorter.sort(maps, sort_specs)
defdelegate adapt_string(string, sorting_on_structs?), to: SortSpec
defdelegate to_comp_fun(sort_specs), to: SortSpec
defdelegate to_quoted(sort_specs), to: SortSpec
end