lib/surgex/parser/parsers/default_parser.ex
defmodule Surgex.Parser.DefaultParser do
@moduledoc """
Return default value for an empty input.
"""
@empty_values [nil, ""]
@spec call(term(), term(), Keyword.t()) :: {:ok, term()}
def call(input_value, default_input_value, opts \\ []) do
empty_values = Keyword.get(opts, :empty_values, @empty_values)
if trim(input_value) in empty_values do
{:ok, default_input_value}
else
{:ok, input_value}
end
end
defp trim(input_value) when is_binary(input_value), do: String.trim(input_value)
defp trim(input_value), do: input_value
end