lib/surgex/parser/parsers/contain_parser.ex
defmodule Surgex.Parser.ContainParser do
@moduledoc """
Checks if the given parameter's value is on the list of allowed values.
"""
@doc false
@spec call(term(), nonempty_list()) :: {:ok, term() | nil} | {:error, :invalid_value}
def call(nil, _allowed_values), do: {:ok, nil}
def call("", _allowed_values), do: {:ok, nil}
def call(input, allowed_values) when is_list(allowed_values) do
case Enum.member?(allowed_values, input) do
true -> {:ok, input}
false -> {:error, :invalid_value}
end
end
end