lib/validators/max.ex

defmodule Veli.Validators.Max do
  @moduledoc """
  Max validator.
  
  ## Example
  
      rule = [max: 20]
      Veli.valid("valid length", rule)
      Veli.valid(30, rule) # invalid
  """

  @spec valid?(any, number) :: boolean
  def valid?(value, rule) when is_binary(value) do
    String.length(value) <= rule
  end

  def valid?(value, rule) when is_integer(value) or is_float(value) do
    value <= rule
  end

  def valid?(_value, _rule) do
    false
  end
end