View Source MapSorter.Cond (Map Sorter v0.2.66)

Generates cond/1 clauses as a heredoc from a list of sort specs.

Summary

Functions

Generates cond/1 clauses as a heredoc from a list of sort specs.

Functions

@spec clauses(MapSorter.SortSpecs.t()) :: String.t()

Generates cond/1 clauses as a heredoc from a list of sort specs.

Examples

iex> alias MapSorter.Cond
iex> sort_specs = [:name, {:desc, :dob}]
iex> Cond.clauses(sort_specs)
"""
&1[:name] < &2[:name] -> true
&1[:name] > &2[:name] -> false
&1[:dob] > &2[:dob] -> true
&1[:dob] < &2[:dob] -> false
"""

iex> alias MapSorter.Cond
iex> sort_specs = [:name, {:desc, {:dob, Date}}]
iex> Cond.clauses(sort_specs)
"""
&1[:name] < &2[:name] -> true
&1[:name] > &2[:name] -> false
&1[:dob] != nil and Date.compare(&1[:dob], &2[:dob]) == :gt -> true
&1[:dob] != nil and Date.compare(&1[:dob], &2[:dob]) == :lt -> false
"""

iex> alias MapSorter.Cond
iex> sort_specs = [:name, {:desc, {:dob, String}}]
iex> Cond.clauses(sort_specs)
"""
&1[:name] < &2[:name] -> true
&1[:name] > &2[:name] -> false
&1[{:dob, String}] > &2[{:dob, String}] -> true
&1[{:dob, String}] < &2[{:dob, String}] -> false
"""