Current section
Files
Jump to
Current section
Files
lib/chexes.ex
defprotocol Chexes do
@fallback_to_any true
def blank?(data)
def present?(data)
end
defimpl Chexes, for: Integer do
alias Chexes
def blank?(_), do: false
def present?(data), do: not Chexes.blank?(data)
end
defimpl Chexes, for: String do
alias Chexes
def blank?(''), do: true
def blank?(' '), do: true
def blank?(_), do: false
def present?(data), do: not Chexes.blank?(data)
end
defimpl Chexes, for: BitString do
alias Chexes
def blank?(""), do: true
def blank?(" "), do: true
def blank?(_), do: false
def present?(data), do: not Chexes.blank?(data)
end
defimpl Chexes, for: List do
alias Chexes
def blank?([]), do: true
def blank?(_), do: false
def present?(data), do: not Chexes.blank?(data)
end
defimpl Chexes, for: Tuple do
alias Chexes
def blank?({}), do: true
def blank?(_), do: false
def present?(data), do: not Chexes.blank?(data)
end
defimpl Chexes, for: Map do
alias Chexes
def blank?(map) when map_size(map) <= 0, do: true
def blank?(_), do: false
def present?(data), do: not Chexes.blank?(data)
end
defimpl Chexes, for: Atom do
alias Chexes
def blank?(false), do: true
def blank?(nil), do: true
def blank?(_), do: false
def present?(data), do: not Chexes.blank?(data)
end
defimpl Chexes, for: MapSet do
alias Chexes
def blank?(data), do: Enum.empty?(data)
def present?(data), do: not Chexes.blank?(data)
end
if Code.ensure_loaded?(Ecto) do
defimpl Chexes, for: Ecto.Date do
alias Chexes
def blank?(%Ecto.Date{year: 0, month: 0, day: 0}), do: true
def blank?(%Ecto.Date{year: 1, month: 1, day: 1}), do: true
def blank?(_), do: false
def present?(data), do: not Chexes.blank?(data)
end
defimpl Chexes, for: Ecto.Association.NotLoaded do
alias Chexes
def blank?(_), do: true
def present?(data), do: not Chexes.blank?(data)
end
end
defimpl Chexes, for: Any do
def blank?(_), do: false
def present?(_), do: false
end