Current section
Files
Jump to
Current section
Files
lib/predicate/greater_than.ex
defmodule Funx.Predicate.GreaterThan do
@moduledoc """
Predicate that checks if a value is strictly greater than a reference value
using an `Ord` comparator.
Options
- `:value` (required)
The reference value to compare against.
- `:ord` (optional)
An ordering comparator. Defaults to `Funx.Ord.Protocol`.
## Examples
use Funx.Predicate
# Check if score is greater than 0
pred do
check :score, {GreaterThan, value: 0}
end
# With custom Ord comparator
pred do
check :date, {GreaterThan, value: start_date, ord: Date.Ord}
end
"""
@behaviour Funx.Predicate.Dsl.Behaviour
alias Funx.Ord
@impl true
def pred(opts) do
reference = Keyword.fetch!(opts, :value)
ord = Keyword.get(opts, :ord, Ord.Protocol)
fn value ->
Ord.compare(value, reference, ord) == :gt
end
end
end