defmodule Mobilizon.Service.Guards do
  @moduledoc """
  Various guards
  """

  @doc """
  Returns `true` if `term` is a valid string and not empty.

  ## Examples

      iex> is_valid_string("one")
      true
      iex> is_valid_string("")
      false
      iex> is_valid_string(2)
      false
  """
  defguard is_valid_string(term) when is_binary(term) and term != ""

  @doc """
  Returns `true` if `term` is a valid list and not empty.

  ## Examples

      iex> is_valid_list(["one"])
      true
      iex> is_valid_list([])
      false
      iex> is_valid_list("foo")
      false
  """
  defguard is_valid_list(term) when is_list(term) and length(term) > 0
end