# `MapSorter.Cond`
[🔗](https://github.com/RaymondLoranger/map_sorter/blob/main/lib/map_sorter/cond.ex#L1)

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

# `clauses`

```elixir
@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
    """

    iex> alias MapSorter.Cond
    iex> Cond.clauses([])
    """
    """

    iex> alias MapSorter.Cond
    iex> Cond.clauses([])
    ""

---

*Consult [api-reference.md](api-reference.md) for complete listing*
