     """
     @spec is_valid?(DateTuple.t) :: boolean
     def is_valid?(date_tuple)
-    def is_valid?(%DateTuple{month: month}) when is_nil(month), do: false
-    def is_valid?(%DateTuple{year: year}) when is_nil(year), do: false
+
+    def is_valid?(%DateTuple{month: month}) when is_nil(month),
+      do: false
+
+    def is_valid?(%DateTuple{year: year}) when is_nil(year),
+      do: false
+
     def is_valid?(date_tuple=%DateTuple{day: day}) when is_nil(day) do
       is_valid? Map.put(date_tuple, :day, 1)
     end
+
     def is_valid?(%DateTuple{year: year, month: month, day: day}) do
       case Date.new(year, month, day) do
         {:ok, _} ->

  """
  @spec normalise_year(String.t | integer) :: integer | :nil
  def normalise_year(year)
  def normalise_year(""), do: :nil
  def normalise_year(year) when is_binary(year) do
    normalise_year String.to_integer(year)
  end
  def normalise_year(year) when year < 100 do
    normalise_year(year + 2000, :past_only)
  end
  def normalise_year(year), do: year
  def normalise_year(year, :past_only) do
    current_year = DateTime.utc_now.year
    cond do

          false
      end
    end

    def is_valid?(_),
      do: false
  end

  defimpl String.Chars, for: DateTuple do
