CPF v1.1.0 CPF View Source

CPF module that provides functions to verify if a CPF is valid.

Link to this section Summary

Types

A text in String.t() or a positive integer

t()

The CPF type. It' composed of eleven digits(0-9]).

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

A text in String.t() or a positive integer

The CPF type. It' composed of eleven digits(0-9]).

Link to this section Functions

Link to this function

cpf?(arg1)

View Source
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
Link to this function

digits(cpf)

View Source
digits(t()) :: tuple()

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.

Examples

iex> CPF.flex("  04.4 .8*58().476-08  ")
"04485847608"

iex> "  04.4 .8*58().476-08  " |> CPF.flex() |> CPF.valid?()
true
Link to this function

format(cpf)

View Source
format(cpf :: t()) :: String.t()

Returns a formatted string from a given cpf.

Examples

iex> 563_606_676_73 |> CPF.new() |> CPF.format()
"563.606.676-73"
Link to this function

generate()

View Source
generate() :: t()

Generates a random valid CPF.

Examples

iex> CPF.generate() |> to_string() |> CPF.valid?
true

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"
Link to this function

new(valid_cpf)

View Source
new(input()) :: t()

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.

Link to this function

parse(input)

View Source
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}}
Link to this function

parse!(input)

View Source
parse!(input()) :: t()

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
Link to this function

to_integer(cpf)

View Source
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
Link to this function

valid?(input)

View Source
valid?(input :: input()) :: boolean()

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