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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b2cf275f400b6b14998a3fb93784552ea97b3912
4
- data.tar.gz: 174a94c9abb1b3d817ac9758189181cde19cb197
3
+ metadata.gz: e70270f34121661f894f5dbff401c6d3e0b951d5
4
+ data.tar.gz: 3cd79d4e1eed51e58743e8aacd0e4c7d43cbe3ee
5
5
  SHA512:
6
- metadata.gz: 3e49a5251ca7ed3b1fa9893ccf89912b7a1b236a61e6dc024ab0bac9da7f4d3cb5a256d80f6d11a398902988f6b9adf79f53678c19b0813907bc7f5d36f6e194
7
- data.tar.gz: bb5916bc550c037fd4a95b1f49f040631fac901837196566a857e8f9c328648020f02192ba3bf74ee8c83982a2ec1105a2c35d5262591d06101e719246499b8d
6
+ metadata.gz: 4043a3348aa1dcc96ab636a110cb6a3703d08acadafbcce7c5a0a11c6810c467775d2c1eb191e5d025bc15f173cea159e6633e563315c8dc6288c8bc1e89f680
7
+ data.tar.gz: be45310c798eb2f8bf5f75652aa255a95c497600ace115956e60b72ab23f70f712678ff426929641d09049e8353eea967f0c0f7e89d55917bdcbd6672dce8350
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- #source 'https://rubygems.org'
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in edacpfbr.gemspec
4
4
  gemspec
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
@@ -1,3 +1,3 @@
1
1
  module EdaCPFbr
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/edacpfbr.rb CHANGED
@@ -1,19 +1,31 @@
1
- require "edacpfbr/version"
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
- @first_block = @cpf[0..8]
9
- @dig1 = @cpf[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.1.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-04 00:00:00.000000000 Z
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: