surgeventures/surgex

View on GitHub
lib/surgex/parser/parsers/default_parser.ex

Summary

Maintainability
Test Coverage
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