brdocs v0.2.0 BrDocs View Source

Generation, validation and formatting for Brazilian docs.

Currently supported docs:

  • CPF it's a Brazilian identification number for individuals (like SSN, in USA).
  • CNPJ it's a Brazilian identification number for companies.

Link to this section Summary

Functions

Formats the BrDocs.BrDoc value. Returns a formatted BrDocs.BrDoc

Formats the value. Returns a formatted BrDocs.BrDoc

Used mostly for testing, yet you can generate a valid doc. Returns a BrDocs.BrDoc

Validates BrDocs.BrDoc. Returns a boolean

Validates the value. Returns a boolean

Link to this section Functions

Formats the BrDocs.BrDoc value. Returns a formatted BrDocs.BrDoc.

Examples

  iex> BrDocs.format(%BrDocs.BrDoc{kind: :cpf, value: "12345678909"})
  %BrDocs.BrDoc{kind: :cpf, value: "123.456.789-09"}

  iex> BrDocs.format(%BrDocs.BrDoc{kind: :cnpj, value: "11444777000161"})
  %BrDocs.BrDoc{kind: :cnpj, value: "11.444.777/0001-61"}

Formats the value. Returns a formatted BrDocs.BrDoc.

The atom argument must be one of :cpf, :cnpj.

Examples

  iex> BrDocs.format("12345678909", :cpf)
  %BrDocs.BrDoc{kind: :cpf, value: "123.456.789-09"}

  iex> BrDocs.format("11444777000161", :cnpj)
  %BrDocs.BrDoc{kind: :cnpj, value: "11.444.777/0001-61"}
Link to this function

generate(kind, opts \\ [formatted: false]) View Source
generate(atom(), keyword()) :: BrDocs.BrDoc.t()

Used mostly for testing, yet you can generate a valid doc. Returns a BrDocs.BrDoc.

The kind must be one of :cpf, :cnpj.

Options

  • formatted - a boolean to format the doc after generation. Defaults to false.

Examples

  iex> BrDocs.generate(:cpf)
  %BrDocs.BrDoc{kind: :cpf, value: "12345678909"}

  iex> BrDocs.generate(:cpf, formatted: true)
  %BrDocs.BrDoc{kind: :cpf, value: "123.456.789-09"}

  iex> BrDocs.generate(:cnpj)
  %BrDocs.BrDoc{kind: :cnpj, value: "11444777000161"}

  iex> BrDocs.generate(:cnpj, formatted: true)
  %BrDocs.BrDoc{kind: :cnpj, value: "11.444.777/0001-61"}

Validates BrDocs.BrDoc. Returns a boolean.

Examples

  iex> BrDocs.validate(%BrDocs.BrDoc{kind: :cpf, value: "12345678909"})
  true

  iex> BrDocs.validate(%BrDocs.BrDoc{kind: :cpf, value: "12345678900"})
  false

  iex> BrDocs.validate(%BrDocs.BrDoc{kind: :cpf, value: "123.456.789-09"})
  true

  iex> BrDocs.validate(%BrDocs.BrDoc{kind: :cpf, value: "123.456.789-00"})
  false

  iex> BrDocs.validate(%BrDocs.BrDoc{kind: :cnpj, value: "11444777000161"})
  true

  iex> BrDocs.validate(%BrDocs.BrDoc{kind: :cnpj, value: "11444777000160"})
  false

  iex> BrDocs.validate(%BrDocs.BrDoc{kind: :cnpj, value: "11.444.777/0001-61"})
  true

  iex> BrDocs.validate(%BrDocs.BrDoc{kind: :cnpj, value: "11.444.777/0001-60"})
  false
Link to this function

validate(value, kind) View Source
validate(String.t(), atom()) :: BrDocs.BrDoc.t()

Validates the value. Returns a boolean.

The atom argument must be one of :cpf, :cnpj.

Examples

  iex> BrDocs.validate("12345678909", :cpf)
  true

  iex> BrDocs.validate("12345678900", :cpf)
  false

  iex> BrDocs.validate("123.456.789-09", :cpf)
  true

  iex> BrDocs.validate("123.456.789-00", :cpf)
  false

  iex> BrDocs.validate("11444777000161", :cnpj)
  true

  iex> BrDocs.validate("11444777000160", :cnpj)
  false

  iex> BrDocs.validate("11.444.777/0001-61", :cnpj)
  true

  iex> BrDocs.validate("11.444.777/0001-60", :cnpj)
  false