lib/conjugate_have.ex

defmodule ConjugateHave do

  def conjugate(options) do
    case options[:tense] do
      "present" -> present(options)
      "past" -> past(options)
      "future" -> future(options)
    end
  end

  defp present(options) do
    case options[:person] do
      "third" -> present_third(options[:plurality])
      _ -> "have"
    end
  end

  defp past(_) do "had"  end

  defp future(options) do
    case options[:person] do
      "first" -> "shall have"
      _ -> "will have"
    end
  end

  defp present_third(plurality) do
    case plurality do
      "singular" -> "has"
      _ -> "have"
    end
  end
end