ExEssentials.BrazilianDocument.Validator (ExEssentials v0.7.0)

View Source

Provides validation for Brazilian CPF and CNPJ documents, including support for alphanumeric CNPJs. This module can be used to validate individual CPF or CNPJ numbers, with or without formatting characters.

## Examples

  iex> ExEssentials.BrazilianDocument.Validator.valid?("26944480000132")
  true

  iex> ExEssentials.BrazilianDocument.Validator.valid?("26944480000132")
  true

  iex> ExEssentials.BrazilianDocument.Validator.valid?("12ABC34501DE35")
  true

  iex> ExEssentials.BrazilianDocument.Validator.valid?("48335092029")
  false

  iex> ExEssentials.BrazilianDocument.Validator.valid?("26944480000133")
  false

  iex> ExEssentials.BrazilianDocument.Validator.valid?("AB123CD456EF01")
  false

The valid?/1 function will automatically detect whether the given document is a CPF or CNPJ based on its length.

Summary

Functions

Validates a CNPJ (Cadastro Nacional da Pessoa Jurídica), including support for alphanumeric formats. It detects if the CNPJ is numeric or alphanumeric and applies the appropriate validation rules.

Validates a CPF (Cadastro de Pessoas Físicas). The function extracts numeric digits, verifies check digits, and checks against known invalid repeated values.

Determines if a given string is a valid CPF or CNPJ. It strips whitespace and delegates to the appropriate validation function based on document length.

Functions

cnpj_valid?(cnpj)

@spec cnpj_valid?(cnpj :: String.t()) :: boolean()

Validates a CNPJ (Cadastro Nacional da Pessoa Jurídica), including support for alphanumeric formats. It detects if the CNPJ is numeric or alphanumeric and applies the appropriate validation rules.

## Parameters

- cnpj: a string containing a numeric or alphanumeric CNPJ.

## Examples

  iex> ExEssentials.BrazilianDocument.Validator.cnpj_valid?("78944804000136")
  true

  iex> ExEssentials.BrazilianDocument.Validator.cnpj_valid?("12ABC34501DE35")
  true

  iex> ExEssentials.BrazilianDocument.Validator.cnpj_valid?("78944804000137")
  false

  iex> ExEssentials.BrazilianDocument.Validator.cnpj_valid?("12ABC34501DE36")
  false

cpf_valid?(cpf)

@spec cpf_valid?(cpf :: String.t()) :: boolean()

Validates a CPF (Cadastro de Pessoas Físicas). The function extracts numeric digits, verifies check digits, and checks against known invalid repeated values.

## Parameters

- cpf: a string containing a CPF, formatted or not.

## Examples

  iex> ExEssentials.BrazilianDocument.Validator.cpf_valid?("05859468092")
  false

  iex> ExEssentials.BrazilianDocument.Validator.cpf_valid?("05859468091")
  true

valid?(document)

@spec valid?(document :: String.t()) :: boolean()

Determines if a given string is a valid CPF or CNPJ. It strips whitespace and delegates to the appropriate validation function based on document length.

## Parameters

- document: a string containing a CPF or CNPJ, with or without formatting.

## Examples

  iex> ExEssentials.BrazilianDocument.Validator.valid?("16664593051")
  false

  iex> ExEssentials.BrazilianDocument.Validator.valid?("16664593050")
  true

Returns true if valid, false if invalid.