Current section

Files

Jump to
map_sorter lib ie.ex
Raw

lib/ie.ex

defmodule IE do
@moduledoc false
@people [
%{name: "Mike", likes: "ski, arts", dob: ~D[1992-04-15]},
%{name: "Mary", likes: "travels" , dob: ~D[1992-04-15]},
%{name: "Ann" , likes: "reading" , dob: ~D[1992-04-15]},
%{name: "Ray" , likes: "cycling" , dob: ~D[1977-08-28]},
%{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]}
]
@people_as_keywords [
[name: "Mike", likes: "ski, arts", dob: ~D[1992-04-15]],
[name: "Mary", likes: "travels" , dob: ~D[1992-04-15]],
[name: "Ann" , likes: "reading" , dob: ~D[1992-04-15]],
[name: "Ray" , likes: "cycling" , dob: ~D[1977-08-28]],
[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]]
]
# Functions for iex session...
#
# Examples:
# require IE
# IE.use
# MapSorter.sort(people(), asc: :dob, desc: :likes)
# MapSorter.sort(people_as_keywords(), asc: :dob, desc: :likes)
# MapSorter.sort(people(), asc: :dob, desc: :name)
# MapSorter.sort(people_as_keywords(), asc: :dob, desc: :name)
# MapSorter.sort(people(), desc: :dob, asc: :likes)
# MapSorter.sort(people_as_keywords(), desc: :dob, asc: :likes)
# MapSorter.sort(people(), desc: :dob, asc: :name)
# MapSorter.sort(people_as_keywords(), desc: :dob, asc: :name)
# Support.eval_sort_fun([:dob, desc: :likes])
# Support.sort_fun_ast([:dob, desc: :likes])
# Support.sort_fun_ast(quote do: Tuple.to_list({:dob, {:desc, :likes}}))
# Support.adapt("&1[:dob] < ...\n&2[:likes] -> ...") |> IO.puts()
# Support.adapt("&1[~D[2017-11-02]] < ...") |> IO.puts()
defmacro use() do
quote do
import IE
alias MapSorter.Support
require MapSorter
:ok
end
end
def people(), do: @people
def people_as_keywords(), do: @people_as_keywords
end