CPF CNPJ Plus

Gem Version Ruby License: MIT

cpf_cnpj_plus é uma biblioteca Ruby para validar, gerar e formatar números de CPF e CNPJ brasileiros. Funciona em Ruby puro (sem dependências de runtime), tem um validador opcional para Rails/ActiveModel, e oferece ferramentas de linha de comando.


🚀 Novidade: Suporte a CNPJ Alfanumérico

Atenção: Esta gem já está atualizada para validar e formatar os novos CNPJs alfanuméricos, conforme a alteração anunciada pela Receita Federal para julho de 2026.
Assim, seu sistema estará pronto para lidar tanto com o formato tradicional quanto com o novo padrão de CNPJ.


Instalação

Adicione esta linha ao seu Gemfile:

ruby gem "cpf_cnpj_plus"

E execute:

bash bundle install Ou instale diretamente com:

bash gem install cpf_cnpj_plus

Uso Básico

API Ruby

A gem oferece uma API unificada para CPF e CNPJ. Exemplos:

```ruby require “cpf_cnpj_plus”

CPF

CpfCnpjPlus.valid_cpf?(“123.456.789-09”) # => true ou false CpfCnpjPlus.format_cpf(“12345678909”) # => “123.456.789-09” CpfCnpjPlus.generate_cpf # => Gera um CPF válido

CNPJ

CpfCnpjPlus.valid_cnpj?(“12.345.678/0001-95”) # => true ou false CpfCnpjPlus.format_cnpj(“12345678000195”) # => “12.345.678/0001-95” CpfCnpjPlus.generate_cnpj # => Gera um CNPJ válido

CNPJ Alfanumérico (novo formato)

CpfCnpjPlus.valid_cnpj?(“12.ABC.345/01DE-35”) # => true CpfCnpjPlus.format_cnpj(“12ABC34501DE35”) # => “12.ABC.345/01DE-35” CpfCnpjPlus.generate_cnpj(alphanumeric: true) # => Gera um CNPJ alfanumérico válido CpfCnpjPlus.alphanumeric_cnpj?(“12ABC34501DE35”) # => true (identifica se já usa o novo padrão)

API unificada (detecta CPF ou CNPJ pelo tamanho do documento)

CpfCnpjPlus.valid?(“123.456.789-09”) # => true ou false CpfCnpjPlus.valid?(“12.345.678/0001-95”) # => true ou false CpfCnpjPlus.format(“12345678909”) # => “123.456.789-09” CpfCnpjPlus.format(“12345678000195”) # => “12.345.678/0001-95” CpfCnpjPlus.generate(:cpf) # => Gera um CPF válido CpfCnpjPlus.generate(:cnpj, alphanumeric: true) # => Gera um CNPJ alfanumérico válido

Formatação estrita (retorna nil se os dígitos verificadores forem inválidos)

CpfCnpjPlus.format_cpf(“12345678900”, strict: true) # => nil (dígitos verificadores errados) CpfCnpjPlus.format_cnpj(“12345678000199”, strict: true) # => nil (dígitos verificadores errados) ```

Validação em Rails/ActiveModel

A gem também traz um validador opcional para uso com ActiveModel::Validations (inclusive em models Rails). Ele não é carregado junto com require "cpf_cnpj_plus" — é preciso requerê-lo explicitamente, e activemodel precisa estar disponível na sua aplicação:

```ruby require “cpf_cnpj_plus/active_model_validator”

class Empresa include ActiveModel::Model attr_accessor :cnpj, :cpf

validates :cnpj, cpf_cnpj: { type: :cnpj } # aceita CNPJ numérico ou alfanumérico validates :cpf, cpf_cnpj: { type: :cpf } # ou, para detectar o tipo automaticamente pelo tamanho: # validates :documento, cpf_cnpj: true end ```

Suporta as opções padrão do Rails (allow_nil, allow_blank, message).

Linha de comando

A gem fornece comandos CLI:

bash $ cpf_plus --check 123.456.789-09 $ cpf_plus --format 12345678909 $ cpf_plus --generate $ cnpj_plus --check 12.345.678/0001-95 $ cnpj_plus --check 12.ABC.345/01DE-35 $ cnpj_plus --generate

Compatibilidade

  • Ruby >= 3.1.0 (testado em CI nas versões 3.1, 3.2, 3.3, 3.4 e 4.0).
  • Sem dependências de runtime — funciona em qualquer projeto Ruby puro.
  • Uso com Rails/ActiveModel é opcional: só é necessário se você requerer cpf_cnpj_plus/active_model_validator (veja a seção “Validação em Rails/ActiveModel” acima).

Contribuição

  1. Faça um fork do projeto
  2. Crie sua branch (git checkout -b minha-feature)
  3. Rode bundle install e depois bundle exec rake (specs + rubocop) para garantir que tudo continua passando
  4. Commit suas alterações (git commit -am 'Adiciona nova feature')
  5. Faça push para a branch (git push origin minha-feature)
  6. Abra um Pull Request

Licença

MIT


Para dúvidas ou sugestões, abra uma issue ou envie um pull request!