defmodule ExCnab.Cnab240.Services.HasIdenticalInformations do @moduledoc """ Service to check if the CNAB 240 file has identical informations. """ @spec run(list) :: :ok | {:error, String.t()} def run(list), do: find_list(list, list, :ok) defp find_list(list, [hd | tl], :ok) do index = Enum.find_index(tl, &(&1 == hd)) currentIndex = Enum.find_index(list, &(&1 == hd)) case index do nil -> find_list(list, tl, :ok) _ -> {:error, "A linha #{currentIndex + 1} está duplicada"} end end defp find_list(_list, [], :ok), do: :ok end