edacpfbr 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 +4 -4
- data/Gemfile +1 -1
- data/README.md +9 -1
- data/edacpfbr.gemspec +0 -4
- data/lib/edacpfbr/version.rb +1 -1
- data/lib/edacpfbr.rb +68 -7
- metadata +2 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e70270f34121661f894f5dbff401c6d3e0b951d5
|
4
|
+
data.tar.gz: 3cd79d4e1eed51e58743e8aacd0e4c7d43cbe3ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4043a3348aa1dcc96ab636a110cb6a3703d08acadafbcce7c5a0a11c6810c467775d2c1eb191e5d025bc15f173cea159e6633e563315c8dc6288c8bc1e89f680
|
7
|
+
data.tar.gz: be45310c798eb2f8bf5f75652aa255a95c497600ace115956e60b72ab23f70f712678ff426929641d09049e8353eea967f0c0f7e89d55917bdcbd6672dce8350
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -24,7 +24,7 @@ Você pode invocar
|
|
24
24
|
|
25
25
|
EdaCPFbr.validar(cpf)
|
26
26
|
|
27
|
-
onde `cpf` é uma string contendo um CPF completo. O resultado será `true` se o CPF estiver correto, ou seja, se os dois dígitos verificadores estiverem corretos, ou `false` caso contrário.
|
27
|
+
onde `cpf` é uma string contendo um CPF completo. O resultado será `true` se o CPF estiver correto, ou seja, se os dois dígitos verificadores estiverem simultaneamente corretos, ou `false` caso contrário.
|
28
28
|
|
29
29
|
|
30
30
|
É possível também validar uma lista de CPFs, passada como uma array, com
|
@@ -33,6 +33,14 @@ onde `cpf` é uma string contendo um CPF completo. O resultado será `true` se o
|
|
33
33
|
|
34
34
|
Nesse caso a saía será um Hash, com as chaves sendo os CPFs passados e os valores sendo `true` ou `false`, conforme cada CPF seja correto ou não.
|
35
35
|
|
36
|
+
Finalmente, é possível requisitar uma lista de `n` CPFs válidos com
|
37
|
+
|
38
|
+
EdaCPFbr.gerar_lote_valido(n)
|
39
|
+
|
40
|
+
ou inválidos com
|
41
|
+
|
42
|
+
EdaCPFbr.gerar_lote_invalido(n)
|
43
|
+
|
36
44
|
## Desenvolvimento
|
37
45
|
|
38
46
|
Depois de fazer o checkout do repositório, execure `bin/setup` para instalar as dependências. Então execure `rake spec` para rodar todos os testes. Você pode também executar `bin/console` para obter um console iterativo que permitirá fazer experiências com a gema.
|
data/edacpfbr.gemspec
CHANGED
@@ -25,8 +25,4 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
26
|
spec.add_development_dependency "rspec", "~> 3.0"
|
27
27
|
|
28
|
-
spec.add_runtime_dependency "slop", "~> 4.4"
|
29
|
-
spec.add_runtime_dependency "colorize", "~> 0.8"
|
30
|
-
spec.add_runtime_dependency "json", "~> 2.0"
|
31
|
-
|
32
28
|
end
|
data/lib/edacpfbr/version.rb
CHANGED
data/lib/edacpfbr.rb
CHANGED
@@ -1,19 +1,31 @@
|
|
1
|
-
require
|
1
|
+
require 'edacpfbr/version'
|
2
2
|
|
3
3
|
module EdaCPFbr
|
4
4
|
|
5
5
|
def self.validar(cpf)
|
6
6
|
return false if cpf.length < 11
|
7
7
|
@cpf = cpf
|
8
|
-
|
9
|
-
|
10
|
-
@dig2 = @cpf[10]
|
11
|
-
@second_block = @cpf[1..9]
|
12
|
-
return false if not digito_correto(@first_block,@dig1)
|
13
|
-
return false if not digito_correto(@second_block,@dig2)
|
8
|
+
return false if not digito_correto(primeiro_bloco,dig1)
|
9
|
+
return false if not digito_correto(segundo_bloco,dig2)
|
14
10
|
true
|
15
11
|
end
|
16
12
|
|
13
|
+
def self.primeiro_bloco
|
14
|
+
@cpf[0..8]
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.segundo_bloco
|
18
|
+
@cpf[1..9]
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.dig1
|
22
|
+
@cpf[9]
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.dig2
|
26
|
+
@cpf[10]
|
27
|
+
end
|
28
|
+
|
17
29
|
def self.validar_lote(lote)
|
18
30
|
retorno_lote = Hash.new
|
19
31
|
lote.each{ |cpf| retorno_lote[cpf] = validar(cpf) }
|
@@ -35,4 +47,53 @@ module EdaCPFbr
|
|
35
47
|
(r>9) ? 0 : r
|
36
48
|
end
|
37
49
|
|
50
|
+
def self.digito_contextual(bloco)
|
51
|
+
dig = digito(bloco)
|
52
|
+
return dig if valids
|
53
|
+
dig = dig + 1
|
54
|
+
dig > 9 ? 0 : dig
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.gerar_lote_valido(qnt)
|
58
|
+
set_valids(true)
|
59
|
+
gerar_lote(qnt)
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.gerar_lote_invalido(qnt)
|
63
|
+
set_valids(false)
|
64
|
+
gerar_lote(qnt)
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.gerar_lote(qnt)
|
68
|
+
lote = Array.new
|
69
|
+
lote_blocos(qnt).each do |bloco1|
|
70
|
+
dig1 = digito_contextual(bloco1)
|
71
|
+
bloco2 = "#{bloco1}#{dig1}"[1..9]
|
72
|
+
dig2 = digito(bloco2)
|
73
|
+
@cpf = "#{bloco1}#{dig1}#{dig2}"
|
74
|
+
lote.push(@cpf)
|
75
|
+
end
|
76
|
+
lote
|
77
|
+
end
|
78
|
+
|
79
|
+
def self.lote_blocos(qnt)
|
80
|
+
blocos = Array.new
|
81
|
+
while (blocos.length < qnt) do
|
82
|
+
@cpf = ""
|
83
|
+
(1..9).each do |n|
|
84
|
+
@cpf = "#{@cpf}#{rand(10)}"
|
85
|
+
end
|
86
|
+
blocos.push(@cpf) if not blocos.include?(@cpf)
|
87
|
+
end
|
88
|
+
blocos
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.valids
|
92
|
+
@valids
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.set_valids(v)
|
96
|
+
@valids = v
|
97
|
+
end
|
98
|
+
|
38
99
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: edacpfbr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ed de Almeida
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,48 +52,6 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: slop
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '4.4'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '4.4'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: colorize
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0.8'
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0.8'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: json
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '2.0'
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '2.0'
|
97
55
|
description: Valida CPFs e gera lotes de CPFs aleatórios para teste. Fornece listas
|
98
56
|
de CPFs válidos aleatórios.
|
99
57
|
email:
|