lib/cmp/util.ex

defmodule Cmp.Util do
  def compare_terms(left, right) when left == right, do: :eq
  def compare_terms(left, right) when left < right, do: :lt
  def compare_terms(_left, _right), do: :gt

  def comparable_structs do
    base_structs = [Date, Time, DateTime, NaiveDateTime, Version]

    if Code.ensure_loaded?(Decimal) do
      [Decimal | base_structs]
    else
      base_structs
    end
  end
end