lib/maru/params/exceptions.ex

defmodule Maru.Params.TypeError do
  defexception [:type, :reason]

  def message(%{type: type, reason: reason}) do
    "Type #{type} Error: #{reason}"
  end
end

defmodule Maru.Params.ParseError do
  defexception [:attribute, :step, :reason]

  def message(%{step: :parse} = e) do
    "Parse Parameter #{e.attribute} Error: #{e.reason}"
  end

  def message(%{step: :validate} = e) do
    "Validate Parameter #{e.attribute} Error: #{e.reason}"
  end
end