cpf_cnpj_plus 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b0205bbfedea020597d02606a1dd67e642278d11cca9f66b1aa798a136326bda
4
- data.tar.gz: 0712a0959fe535b47d1d03c7f9a0493248354f242a6dd0b29d0a4716d8bd9dcb
3
+ metadata.gz: 3471ac722167a65351c70e1e5d5cc0942bd915ba0420eaef56050778bc05809b
4
+ data.tar.gz: d108eadcb37093bccfe1aca2b5ce65c5c4a1bfad4ebdb312a0d111fca8e0ff95
5
5
  SHA512:
6
- metadata.gz: 4dd053dc269c7868957eea4fef508713e41022b31f9bc60ea40cfa1d0d928df60f7624c6e35fa5dd057912663640be2b36a2b7a23030475793507af0425f27cc
7
- data.tar.gz: c84da6e355ed10be01f01745de51b5dac6f781d5a64bcd6cd60bc9e3772b3a15ebb0674065d9c666db5abc1e28cc39927c29b6927501f6c0fce3656d8d11fe3a
6
+ metadata.gz: d4aa54004da35e9333beb2fdfce720ffec85f171cee7beb9d1204e27c576dddd7d319659581ed20569810c73468fe84c5633674536b3fa6870bee22b76c0e499
7
+ data.tar.gz: 22d11338440ada66d77bd93d05b74297a6a10642f25f7e634d93b44b595e6b08c55ffe06cdb5ca5f74305e44133f3f6f54d32a09001850a084a30c98b57f39be
data/CHANGELOG.md CHANGED
@@ -5,5 +5,9 @@
5
5
  - Initial release
6
6
  - Basic functionality for CPF and CNPJ validation.
7
7
 
8
+ ## [0.2.0] - 2025-07-07
9
+
10
+ - Adjustment to be able to create the two new generation and formatting methods
11
+
8
12
 
9
13
 
data/README.md CHANGED
@@ -41,19 +41,19 @@ A gem oferece uma API unificada para CPF e CNPJ. Exemplos:
41
41
  require "cpf_cnpj_plus"
42
42
 
43
43
  CPF
44
- CPFPlus.format("12345678909") # => "123.456.789-09"
45
- CPFPlus.valid?("123.456.789-09") # => true ou false
46
- CPFPlus.generate # => Gera um CPF válido
44
+ CpfCnpjPlus.valid_cpf?("123.456.789-09") # => true ou false
45
+ CpfCnpjPlus.format_cpf("12345678909") # => "123.456.789-09"
46
+ CpfCnpjPlus.generate # => Gera um CPF válido
47
47
 
48
48
  CNPJ
49
- CNPJPlus.format("12345678000195") # => "12.345.678/0001-95"
50
- CNPJPlus.valid?("12.345.678/0001-95") # => true ou false
51
- CNPJPlus.generate # => Gera um CNPJ válido
49
+ CpfCnpjPlus.valid?("12.345.678/0001-95") # => true ou false
50
+ CpfCnpjPlus.format_cnpj("12345678000195") # => "12.345.678/0001-95"
51
+ CpfCnpjPlus.generate # => Gera um CNPJ válido
52
52
 
53
53
  CNPJ Alfanumérico (novo formato)
54
- CNPJPlus.valid?("A1234567B00195") # => true ou false
55
- CNPJPlus.format("A1234567B00195") # => "A12.345.67B/0019-5"
56
- CNPJPlus.generate # => Gera um CNPJ alfanumérico válido
54
+ CpfCnpjPlus.valid?("A1234567B00195") # => true ou false
55
+ CpfCnpjPlus.format_cnpj("A1234567B00195") # => "A12.345.67B/0019-5"
56
+ CpfCnpjPlus.generate # => Gera um CNPJ alfanumérico válido
57
57
  ```
58
58
 
59
59
 
@@ -1,17 +1,32 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module CpfCnpjPlus
2
4
  module Validator
5
+ # Responsável por validar, formatar e manipular números de CNPJ.
6
+ # Inclui métodos para checagem de validade, geração e formatação.
3
7
  class Cnpj
4
8
  def self.valid?(cnpj)
5
- cnpj = cnpj.to_s.upcase.gsub(/[^A-Z0-9]/, "")
6
- return false unless cnpj.length == 14
9
+ cnpj = normalize(cnpj)
10
+ return false unless valid_length?(cnpj)
7
11
  return false if cpj_not_valid?(cnpj)
8
- return false unless cnpj[0..11] =~ /^[A-Z0-9]{12}$/ && cnpj[12..13] =~ /^[0-9]{2}$/
12
+ return false unless valid_structure?(cnpj)
9
13
 
10
14
  base = cnpj[0..11].chars.map { |c| char_to_value(c) }
11
15
  dv = cnpj[12..13]
12
16
 
13
- dv_calc = calculate_cnpj_digits(base)
14
- dv == dv_calc
17
+ dv == calculate_cnpj_digits(base)
18
+ end
19
+
20
+ def self.normalize(cnpj)
21
+ cnpj.to_s.upcase.gsub(/[^A-Z0-9]/, "")
22
+ end
23
+
24
+ def self.valid_length?(cnpj)
25
+ cnpj.length == 14
26
+ end
27
+
28
+ def self.valid_structure?(cnpj)
29
+ cnpj[0..11] =~ /^[A-Z0-9]{12}$/ && cnpj[12..13] =~ /^[0-9]{2}$/
15
30
  end
16
31
 
17
32
  def self.char_to_value(char)
@@ -26,11 +41,10 @@ module CpfCnpjPlus
26
41
 
27
42
  def self.calculate_cnpj_digits(base)
28
43
  first_digit = calculate_digit(base, fator_index_1d)
29
- second_digit = calculate_digit((base + [first_digit]), fator_index_2d)
44
+ second_digit = calculate_digit(base + [first_digit], fator_index_2d)
30
45
  "#{first_digit}#{second_digit}"
31
46
  end
32
47
 
33
-
34
48
  def self.fator_index_1d
35
49
  [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
36
50
  end
@@ -48,12 +62,13 @@ module CpfCnpjPlus
48
62
  digit = 0 if digit == 10
49
63
  digit
50
64
  end
65
+
51
66
  def self.cpj_not_valid?(cnpj)
52
67
  cnpj = cnpj.to_s.gsub(/[^0-9]/, "")
53
- ["00000000000000", "11111111111111", "22222222222222", "33333333333333",
54
- "44444444444444", "55555555555555", "66666666666666", "77777777777777",
55
- "88888888888888", "99999999999999"].include?(cnpj)
68
+ %w[00000000000000 11111111111111 22222222222222 33333333333333
69
+ 44444444444444 55555555555555 66666666666666 77777777777777
70
+ 88888888888888 99999999999999].include?(cnpj)
56
71
  end
57
72
  end
58
73
  end
59
- end
74
+ end
@@ -1,15 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module CpfCnpjPlus
2
4
  module Validator
5
+ # Responsável por validar, formatar e manipular números de CPF.
6
+ # Inclui métodos para checagem de validade, geração e formatação.
3
7
  class Cpf
4
8
  def self.valid?(cpf)
5
9
  cpf = cpf.to_s.gsub(/[^0-9]/, "")
6
10
  return false unless cpf.length == 11 && cpf =~ /^\d{11}$/
7
11
  return false if cpj_not_valid?(cpf)
12
+
8
13
  first_digit(cpf) && second_digit(cpf)
9
14
  end
10
15
 
11
- private
12
-
13
16
  def self.first_digit(cpf)
14
17
  first_digit = cpf[0..8]
15
18
  soma = 0
@@ -31,15 +34,15 @@ module CpfCnpjPlus
31
34
  soma += res
32
35
  ponteiro -= 1
33
36
  end
34
- soma * 10 % 11 == cpf[10].to_i || (soma * 10 % 11 == 10 && cpf[10].to_i == 0)
37
+ soma * 10 % 11 == cpf[10].to_i || (soma * 10 % 11 == 10 && cpf[10].to_i.zero?)
35
38
  end
36
39
 
37
40
  def self.cpj_not_valid?(cpf)
38
41
  cpf = cpf.to_s.gsub(/[^0-9]/, "")
39
- ["00000000000", "11111111111", "22222222222", "33333333333",
40
- "44444444444", "55555555555", "66666666666",
41
- "77777777777", "88888888888", "99999999999"].include?(cpf)
42
+ %w[00000000000 11111111111 22222222222 33333333333
43
+ 44444444444 55555555555 66666666666
44
+ 77777777777 88888888888 99999999999].include?(cpf)
42
45
  end
43
46
  end
44
47
  end
45
- end
48
+ end
@@ -1,6 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module CpfCnpjPlus
4
+ # Módulo responsável por agrupar validadores de CPF e CNPJ.
5
+ # Fornece métodos e classes auxiliares para validação de documentos brasileiros,
6
+ # incluindo suporte a formatos tradicionais e futuros (como CNPJ alfanumérico).
2
7
  module Validator
3
- require_relative 'validator/cnpj'
4
- require_relative 'validator/cpf'
8
+ require_relative "validator/cnpj"
9
+ require_relative "validator/cpf"
5
10
  end
6
11
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CpfCnpjPlus
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/cpf_cnpj_plus.rb CHANGED
@@ -3,8 +3,12 @@
3
3
  require_relative "cpf_cnpj_plus/version"
4
4
  require_relative "cpf_cnpj_plus/validator"
5
5
 
6
+ # Módulo principal da gem cpf_cnpj_plus.
7
+ # Fornece métodos para validação, geração e formatação de CPFs e CNPJs,
8
+ # incluindo suporte ao novo padrão de CNPJ alfanumérico.
6
9
  module CpfCnpjPlus
7
10
  class Error < StandardError; end
11
+
8
12
  def self.valid_cnpj?(cnpj)
9
13
  CpfCnpjPlus::Validator::Cnpj.valid?(cnpj)
10
14
  end
@@ -12,4 +16,20 @@ module CpfCnpjPlus
12
16
  def self.valid_cpf?(cpf)
13
17
  CpfCnpjPlus::Validator::Cpf.valid?(cpf)
14
18
  end
19
+
20
+ def self.format_cpf(cpf)
21
+ CpfCnpjPlus::Format::Cpf.format(cpf)
22
+ end
23
+
24
+ def self.format_cnpj(cnpj)
25
+ CpfCnpjPlus::Format::Cnpj.format(cnpj)
26
+ end
27
+
28
+ def self.generate_cpf
29
+ CpfCnpjPlus::Generate::Cpf.generate
30
+ end
31
+
32
+ def self.generate_cnpj
33
+ CpfCnpjPlus::Generate::Cnpj.generate
34
+ end
15
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpf_cnpj_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DougNeo
@@ -23,9 +23,10 @@ dependencies:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
25
  version: '0'
26
- description: Fornece métodos práticos para validar, gerar e formatar números de CPF
27
- e CNPJ, incluindo ferramentas de linha de comando para facilitar integrações em
28
- sistemas bancários, governamentais e aplicações Ruby em geral.
26
+ description: |-
27
+ Fornece métodos práticos para validar, gerar e formatar números de CPF e CNPJ, incluindo
28
+ ferramentas de linha de comando para facilitar integrações em sistemas bancários,
29
+ governamentais e aplicações Ruby em geral.
29
30
  email:
30
31
  - doug.neo@gmail.com
31
32
  executables: []