CPF v1.0.0 CPF View Source
CPF module that provides functions to verify if a CPF is valid.
Link to this section Summary
Functions
Checks if the given argument is CPF.t() type.
Returns a tuple with the eleven digits of the given cpf.
Cleans up all characters of a given input except numbers. It can make CPF validation more flexbile.
Returns a formatted string from a given cpf.
Generates a random valid CPF.
Generates a predictable random valid CPF wit the given seed.
Initializes a CPF.
Builds a CPF struct by validating its digits and format. Returns an ok/error tuple for valid/invalid CPFs.
Builds a CPF struct by validating its digits and format. Returns an CPF type
or raises an CPF.ParsingError exception.
Returns a integer representation of the given cpf.
Returns true the given cpf is valid, otherwise false.
Link to this section Types
input()
View Source
input() :: String.t() | pos_integer()
input() :: String.t() | pos_integer()
A text in String.t() or a positive integer
t()
View Source
(opaque)
t()
t()
The CPF type. It' composed of eleven digits(0-9]).
Link to this section Functions
cpf?(arg1)
View Source
cpf?(any()) :: true | false
cpf?(any()) :: true | false
Checks if the given argument is CPF.t() type.
Examples
iex> CPF.cpf?(563_606_676_73)
false
iex> "56360667673" |> CPF.new() |> CPF.cpf?()
true
digits(cpf) View Source
Returns a tuple with the eleven digits of the given cpf.
flex(input) View Source
Cleans up all characters of a given input except numbers. It can make CPF validation more flexbile.
Examples
iex> CPF.flex(" 04.4 .8*58().476-08 ")
"04485847608"
iex> " 04.4 .8*58().476-08 " |> CPF.flex() |> CPF.valid?()
true
format(cpf) View Source
Returns a formatted string from a given cpf.
Examples
iex> 563_606_676_73 |> CPF.new() |> CPF.format()
"563.606.676-73"
generate()
View Source
generate() :: t()
generate() :: t()
Generates a random valid CPF.
Examples
iex> CPF.generate() |> to_string() |> CPF.valid?
true
generate(seed)
View Source
generate(seed :: :rand.builtin_alg() | :rand.state() | :rand.export_state()) ::
t()
generate(seed :: :rand.builtin_alg() | :rand.state() | :rand.export_state()) :: t()
Generates a predictable random valid CPF wit the given seed.
Examples
iex> seed = {:exrop, [40_738_532_209_663_091 | 74_220_507_755_601_615]}
iex> seed |> CPF.generate() |> CPF.format()
"671.835.731-68"
new(valid_cpf) View Source
Initializes a CPF.
Examples
iex> CPF.new(563_606_676_73)
#CPF<563.606.676-73>
iex> CPF.new("56360667673")
#CPF<563.606.676-73>
This function doesn't check if CPF numbers are valid, only use this function
if the given String.t or the integer was validated before.
parse(input)
View Source
parse(input()) :: {:ok, t()} | {:error, CPF.ParsingError.t()}
parse(input()) :: {:ok, t()} | {:error, CPF.ParsingError.t()}
Builds a CPF struct by validating its digits and format. Returns an ok/error tuple for valid/invalid CPFs.
Examples
iex> {:ok, cpf} = CPF.parse(563_606_676_73)
iex> cpf
#CPF<563.606.676-73>
iex> CPF.parse(563_606_676_72)
{:error, %CPF.ParsingError{reason: :invalid_verifier}}
parse!(input) View Source
Builds a CPF struct by validating its digits and format. Returns an CPF type
or raises an CPF.ParsingError exception.
Examples
iex> CPF.parse!(563_606_676_73)
#CPF<563.606.676-73>
iex> CPF.parse!(563_606_676_72)
** (CPF.ParsingError) invalid_verifier
to_integer(cpf)
View Source
to_integer(t()) :: pos_integer()
to_integer(t()) :: pos_integer()
Returns a integer representation of the given cpf.
Examples
iex> 4_485_847_608 |> CPF.new() |> CPF.to_integer()
4_485_847_608
valid?(input) View Source
Returns true the given cpf is valid, otherwise false.
Examples
iex> CPF.valid?(563_606_676_73)
true
iex> CPF.valid?(563_606_676_72)
false
iex> CPF.valid?("563.606.676-73")
true
iex> CPF.valid?("563/60.6-676/73")
false
iex> CPF.valid?("563.606.676-72")
false
iex> CPF.valid?("56360667673")
true
iex> CPF.valid?("56360667672")
false