Packages

Elixir package to validate bank account numbers of Brazilian banks.

Current section

Files

Jump to
bran lib banks util.ex
Raw

lib/banks/util.ex

defmodule BRAN.Banks.Util do
@moduledoc """
Documentation for `BRAN.Banks.Util`.
"""
@spec validate_bank_branch([integer()]) :: {:error, :invalid_bank_branch_length} | {:ok, :valid}
def validate_bank_branch(bank_branch) do
if length(bank_branch) == 4 do
{:ok, :valid}
else
{:error, :invalid_bank_branch_length}
end
end
@spec validate_branch_by_example(String.t(), String.t()) ::
{:error, :invalid_bank_branch} | {:ok, :valid}
def validate_branch_by_example(bank_branch, branch_example \\ "0001") do
if bank_branch == branch_example do
{:ok, :valid}
else
{:error, :invalid_bank_branch}
end
end
@spec validate_numeric_digit?(String.t() | integer()) ::
{:not_valid, :non_numeric_digit} | {:ok, integer}
def validate_numeric_digit?(digit) when is_integer(digit), do: {:ok, digit}
def validate_numeric_digit?(nil), do: {:not_valid, :non_numeric_digit}
def validate_numeric_digit?(digit) do
case Integer.parse(digit) do
{parsed_digit, _rest} ->
{:ok, parsed_digit}
_ ->
{:not_valid, :non_numeric_digit}
end
end
end