documentos_br 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6e5a5e28315e2f98cc7170023ed77b943a81e45f
4
+ data.tar.gz: 49eda89c30c687af63f4dec81051897a79d458c6
5
+ SHA512:
6
+ metadata.gz: 59a84d2abaf7308b1435130bbd29bd88fd2c213929d4581e49e0ec53428efaae63030e13503ea1fe7681619131fb8d707376efef2c5824fe2b2e362cf094b324
7
+ data.tar.gz: 0ad9bdde3699cbb41bccbd8ddd0ae8a9776da1d46477c6a47f03420288e2d879254b9ee7d3dafbf435bd5747fcd29135298fd3361f805cd129d83e3c6c7fda30
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format nested
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ rvm:
2
+ - 1.9.2
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.0
6
+ - jruby-19mode
7
+ script: "bundle exec rspec spec"
8
+ addons:
9
+ code_climate:
10
+ repo_token: 0e2046416b36edbde0bc1d871520755acd72dabbdf3d8b52e5ff98176ba15fb4
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Code Climate Test Reporter
4
+ gem "codeclimate-test-reporter", group: :test, require: nil
5
+
6
+ # Code coverage for Ruby 1.9+ with a powerful configuration library and
7
+ # automatic merging of coverage across test suites
8
+ gem 'simplecov', '~> 0.7.1', group: :test, require: nil
9
+
10
+ # A Ruby implementation of the Coveralls API.
11
+ gem 'coveralls', require: false
12
+
13
+ # Specify your gem's dependencies in cpf_utils.gemspec
14
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Jackson Pires
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,255 @@
1
+ # DocumentosBr
2
+ [![Gem Version](https://badge.fury.io/rb/documentos_br.png)](http://badge.fury.io/rb/documentos_br)
3
+ [![Build Status](https://travis-ci.org/jacksonpires/documentos_br.svg?branch=master)](https://travis-ci.org/jacksonpires/documentos_br)
4
+ [![Code Climate](https://codeclimate.com/github/jacksonpires/documentos_br.png)](https://codeclimate.com/github/jacksonpires/documentos_br)
5
+ [![Coverage Status](https://coveralls.io/repos/jacksonpires/documentos_br/badge.png?branch=master)](https://coveralls.io/r/jacksonpires/documentos_br?branch=master)
6
+
7
+ DocumentosBr é um 'wrapper' para a suíte de funcionalidades das Gems 'CpfUtils', 'CnpjUtils' e 'TituloEleitorUtils'.
8
+ O DocumentosBr é capaz de gerar CPF, CNPJ e Título de Eleitor para testes no formado tradicional ou apenas numérico, testa se determinado número de CPF, CNPJ ou Título de Eleitor é válido, gera dígitos verificadores para determinado número candidato a CPF, CNPJ ou Título de Eleitor, dentre outras coisas.
9
+
10
+ *PS: Devido à inconsistência entre as formatações/máscaras usadas para o Título de Eleitor em todo território nacional, optamos por usar uma formatação/máscara próxima à que Justiça Eleitoral usa nos comprovantes de votação. Nossa formatação/máscara será ####.####.####, visto que o título eleitoral é formado por 12 dígitos.*
11
+
12
+ ## Compatibilidade
13
+
14
+ O DocumentosBr usa o Travis-CI para efetuar testes em diferentes versões do Ruby. As versões testadas e aprovadas, por enquanto, são:
15
+
16
+ * MRI 1.9.2, 1.9.3, 2.0.0, 2.1.0
17
+ * JRuby 1.9.x
18
+
19
+ ## Instalação
20
+
21
+ Adicione essa linha na Gemfile da sua aplicação:
22
+
23
+ ```ruby
24
+ gem 'documentos_br'
25
+ ```
26
+
27
+ E então execute:
28
+
29
+ ```ruby
30
+ $ bundle
31
+ ```
32
+
33
+ Ou instale você mesmo, conforme abaixo:
34
+
35
+ ```ruby
36
+ $ gem install documentos_br
37
+ ```
38
+
39
+ ## Uso
40
+
41
+ O DocumentosBr é muito fácil de usar. Veja os exemplos abaixo:
42
+
43
+ ###### CPF
44
+
45
+ ```ruby
46
+ # Para gerar um número de CPF:
47
+ DocumentosBr.cpf => # "45698394823"
48
+
49
+ # Para gerar um CPF formatado:
50
+ DocumentosBr.cpf_formatted => # "456.983.948-23"
51
+
52
+ # Para verificar se um CPF é válido:
53
+ DocumentosBr.valid_cpf?("47238051923") => # true
54
+ DocumentosBr.valid_cpf?(47238051923) => # true
55
+ DocumentosBr.valid_cpf?("472.380.519-23") => # true
56
+
57
+ # Outra forma de verificar se um CPF é válido:
58
+ "45698394823".valid_cpf? => # true
59
+ "456.983.948-23".valid_cpf? => # true
60
+
61
+ # Para verificar se uma máscara de CPF é válida:
62
+ "456.983.948-23".valid_cpf_mask? => # true
63
+ "456.983..948-23".valid_cpf_mask? => # false
64
+
65
+ # Para formatar um número válido de CPF:
66
+ "45698394823".to_cpf_format => # "456.983.948-23"
67
+
68
+ # Para gerar um número de CPF a partir de um número candidato de 9 dígitos:
69
+ "456983948".generate_cpf => # "45698394823"
70
+
71
+ # Para gerar um número de CPF formatado a partir de um número candidato de 9 dígitos:
72
+ "456983948".generate_cpf_formatted => # "456.983.948-23"
73
+ ```
74
+
75
+ ###### CNPJ
76
+
77
+ ```ruby
78
+ # Para gerar um número de CNPJ:
79
+ DocumentosBr.cnpj => # "61287395000140"
80
+
81
+ # Para gerar um CNPJ formatado:
82
+ DocumentosBr.cnpj_formatted => # "61.287.395/0001-40"
83
+
84
+ # Para verificar se um CNPJ é válido:
85
+ DocumentosBr.valid_cnpj?("61287395000140") => # true
86
+ DocumentosBr.valid_cnpj?(61287395000140) => # true
87
+ DocumentosBr.valid_cnpj?("61.287.395/0001-40") => # true
88
+
89
+ # Outra forma de verificar se um CNPJ é válido:
90
+ "61287395000140".valid_cnpj? => # true
91
+ "61.287.395/0001-40".valid_cnpj? => # true
92
+
93
+ # Para verificar se uma máscara de CNPJ é válida:
94
+ "61.287.395/0001-40".valid_cnpj_mask? => # true
95
+ "61.287..395/0001-40".valid_cnpj_mask? => # false
96
+
97
+ # Para formatar um número válido de CNPJ:
98
+ "61287395000140".to_cnpj_format => # "61.287.395/0001-40"
99
+
100
+ # Para gerar um número de CNPJ a partir de um número candidato de 12 dígitos:
101
+ "612873950001".generate_cnpj => # "61287395000140"
102
+
103
+ # Para gerar um número de CNPJ formatado a partir de um número candidato de 12 dígitos:
104
+ "612873950001".generate_cnpj_formatted => # "61.287.395/0001-40"
105
+ ```
106
+
107
+ ###### Título de Eleitor
108
+
109
+ ```ruby
110
+ # Para gerar um número de Título de Eleitor:
111
+ DocumentosBr.titulo_eleitor => # "023434561340"
112
+
113
+ # Para gerar um Título de Eleitor formatado:
114
+ DocumentosBr.titulo_eleitor_formatted => # "0234.3456.1340"
115
+
116
+ # Para verificar se um Título de Eleitor é válido:
117
+ DocumentosBr.valid_titulo_eleitor?("023434561340") => # true
118
+ DocumentosBr.valid_titulo_eleitor?(023434561340) => # true
119
+ DocumentosBr.valid_titulo_eleitor?("0234.3456.1340") => # true
120
+
121
+ # Outra forma de verificar se um Título de Eleitor é válido:
122
+ "023434561340".valid_titulo_eleitor? => # true
123
+ "0234.3456.1340".valid_titulo_eleitor? => # true
124
+
125
+ # Para verificar se uma máscara de Título de Eleitor é válida:
126
+ "0234.3456.1340".valid_titulo_eleitor_mask? => # true
127
+ "0234.3456..1340".valid_titulo_eleitor_mask? => # false
128
+
129
+ # Para formatar um número válido de Título de Eleitor:
130
+ "023434561340".to_titulo_eleitor_format => # "0234.3456.1340"
131
+
132
+ # Para gerar um número de Título de Eleitor a partir de um número candidato de 10 dígitos:
133
+ "612873950001".generate_titulo_eleitor => # "023434561340"
134
+
135
+ # Para gerar um número de Título de Eleitor formatado a partir de um número candidato de 10 dígitos:
136
+ "612873950001".generate_titulo_eleitor_formatted => # "0234.3456.1340"
137
+
138
+ # Para saber a qual unidade federativa o Título de Eleitor pertence:
139
+ DocumentosBr.titulo_eleitor_province("759026311727") => # "TO"
140
+ "759026311727".titulo_eleitor_province => # "TO"
141
+ ```
142
+
143
+ Também é possível usar métodos em português:
144
+
145
+ ###### CPF - Em português
146
+
147
+ ```ruby
148
+ # Para gerar um número de CPF:
149
+ DocumentosBr.cpf => # "45698394823"
150
+
151
+ # Para gerar um CPF formatado:
152
+ DocumentosBr.cpf_formatado => # "456.983.948-23"
153
+
154
+ # Para verificar se um CPF é válido:
155
+ DocumentosBr.cpf_valido?("47238051923") => # true
156
+ DocumentosBr.cpf_valido?(47238051923) => # true
157
+ DocumentosBr.cpf_valido?("472.380.519-23") => # true
158
+
159
+ # Outra forma de verificar se um CPF é válido:
160
+ "45698394823".cpf_valido? => # true
161
+ "456.983.948-23".cpf_valido? => # true
162
+
163
+ # Para verificar se uma máscara de CPF é válida:
164
+ "456.983.948-23".mascara_de_cpf_valida? => # true
165
+ "456.983..948-23".mascara_de_cpf_valida? => # false
166
+
167
+ # Para formatar um número válido de CPF:
168
+ "45698394823".para_formato_cpf => # "456.983.948-23"
169
+
170
+ # Para gerar um número de CPF a partir de um número candidato de 9 dígitos:
171
+ "456983948".gerar_cpf => # "45698394823"
172
+
173
+ # Para gerar um número de CPF formatado a partir de um número candidato de 9 dígitos:
174
+ "456983948".gerar_cpf_formatado => # "456.983.948-23"
175
+ ```
176
+
177
+ ###### CNPJ - Em português
178
+
179
+ ```ruby
180
+ # Para gerar um número de CNPJ:
181
+ DocumentosBr.cnpj => # "61287395000140"
182
+
183
+ # Para gerar um CNPJ formatado:
184
+ DocumentosBr.cnpj_formatado => # "61.287.395/0001-40"
185
+
186
+ # Para verificar se um CNPJ é válido:
187
+ DocumentosBr.cnpj_valido?("61287395000140") => # true
188
+ DocumentosBr.cnpj_valido?(61287395000140) => # true
189
+ DocumentosBr.cnpj_valido?("61.287.395/0001-40") => # true
190
+
191
+ # Outra forma de verificar se um CNPJ é válido:
192
+ "61287395000140".cnpj_valido? => # true
193
+ "61.287.395/0001-40".cnpj_valido? => # true
194
+
195
+ # Para verificar se uma máscara de CNPJ é válida:
196
+ "61.287.395/0001-40".mascara_de_cnpj_valida? => # true
197
+ "61.287..395/0001-40".mascara_de_cnpj_valida? => # false
198
+
199
+ # Para formatar um número válido de CNPJ:
200
+ "61287395000140".para_formato_cnpj => # "61.287.395/0001-40"
201
+
202
+ # Para gerar um número de CNPJ a partir de um número candidato de 12 dígitos:
203
+ "612873950001".gerar_cnpj => # "61287395000140"
204
+
205
+ # Para gerar um número de CNPJ formatado a partir de um número candidato de 12 dígitos:
206
+ "612873950001".gerar_cnpj_formatado => # "61.287.395/0001-40"
207
+ ```
208
+
209
+ ###### Título de Eleitor - Em português
210
+
211
+ ```ruby
212
+ # Para gerar um número de Título de Eleitor:
213
+ DocumentosBr.titulo_eleitor => # "023434561340"
214
+
215
+ # Para gerar um Título de Eleitor formatado:
216
+ DocumentosBr.titulo_eleitor_formatado => # "0234.3456.1340"
217
+
218
+ # Para verificar se um Título de Eleitor é válido:
219
+ DocumentosBr.titulo_eleitor_valido?("023434561340") => # true
220
+ DocumentosBr.titulo_eleitor_valido?(023434561340) => # true
221
+ DocumentosBr.titulo_eleitor_valido?("0234.3456.1340") => # true
222
+
223
+ # Outra forma de verificar se um Título de Eleitor é válido:
224
+ "023434561340".titulo_eleitor_valido? => # true
225
+ "0234.3456.1340".titulo_eleitor_valido? => # true
226
+
227
+ # Para verificar se uma máscara de Título de Eleitor é válida:
228
+ "0234.3456.1340".mascara_de_titulo_eleitor_valida? => # true
229
+ "0234.3456..1340".mascara_de_titulo_eleitor_valida? => # false
230
+
231
+ # Para formatar um número válido de Título de Eleitor:
232
+ "023434561340".para_formato_titulo_eleitor => # "0234.3456.1340"
233
+
234
+ # Para gerar um número de Título de Eleitor a partir de um número candidato de 10 dígitos:
235
+ "612873950001".gerar_titulo_eleitor => # "023434561340"
236
+
237
+ # Para gerar um número de Título de Eleitor formatado a partir de um número candidato de 10 dígitos:
238
+ "612873950001".gerar_titulo_eleitor_formatado => # "0234.3456.1340"
239
+
240
+ # Para saber a qual unidade federativa o Título de Eleitor pertence:
241
+ DocumentosBr.uf_do_titulo_eleitor("759026311727") => # "TO"
242
+ "759026311727".uf_do_titulo_eleitor => # "TO"
243
+ ```
244
+
245
+ ## Recomende
246
+
247
+ Gostou dessa gem? Recomende-me no [Working With Rails](http://www.workingwithrails.com/people/148426)!
248
+
249
+ ## Contribuindo
250
+
251
+ 1. Faça um Fork
252
+ 2. Crie um branch para a nova funcionalidade (`git checkout -b minha-nova-funcionalidade`)
253
+ 3. Faça o commit de suas alterações (`git commit -am 'Adicionada nova funcionalidade'`)
254
+ 4. Faça um push da sua nova funconalidade (`git push origin minha-nova-funcionalidade`)
255
+ 5. Submeta uma nova Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'documentos_br/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "documentos_br"
8
+ spec.version = DocumentosBr::VERSION
9
+ spec.authors = ["Jackson Pires"]
10
+ spec.email = ["jackson.pires@gmail.com"]
11
+ spec.description = %q{Uma 'wrapper' para as Gems 'CpfUtils', 'CnpjUtils' e
12
+ 'TituloEleitorUtils'.}
13
+ spec.summary = %q{DocumentosBr é um 'wrapper' para a suíte de
14
+ funcionalidades das Gems 'CpfUtils', 'CnpjUtils' e
15
+ 'TituloEleitorUtils'.}
16
+ spec.homepage = "https://github.com/jacksonpires/documentos_br"
17
+ spec.license = "MIT"
18
+
19
+ spec.files = `git ls-files`.split($/)
20
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.3"
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "rspec", "~> 2.14.1"
27
+ spec.add_development_dependency "cpf_utils", "~> 1.1.0"
28
+ spec.add_development_dependency "cnpj_utils", "~> 1.0.0"
29
+ spec.add_development_dependency "titulo_eleitor_utils", "~> 1.0.0"
30
+ end
@@ -0,0 +1,3 @@
1
+ module DocumentosBr
2
+ VERSION = "1.0.1"
3
+ end
@@ -0,0 +1,154 @@
1
+ require "documentos_br/version"
2
+ require "cpf_utils"
3
+ require "cnpj_utils"
4
+ require "titulo_eleitor_utils"
5
+
6
+ module DocumentosBr
7
+ # Gera um número de CPF.
8
+ #
9
+ # Exemplo:
10
+ # DocumentosBr.cpf => # "45698394823"
11
+ def self.cpf
12
+ CpfUtils.cpf
13
+ end
14
+
15
+ # Gera um número de CPF formatado.
16
+ #
17
+ # Exemplo:
18
+ # DocumentosBr.cpf_formatted => # "456.983.948-23"
19
+ def self.cpf_formatted
20
+ CpfUtils.cpf_formatted
21
+ end
22
+
23
+ # Gera um número de CPF formatado.
24
+ #
25
+ # Exemplo:
26
+ # DocumentosBr.cpf_formatado => # "456.983.948-23"
27
+ def self.cpf_formatado
28
+ self.cpf_formatted
29
+ end
30
+
31
+ # Verifica se um CPF é válido.
32
+ #
33
+ # Exemplo:
34
+ # DocumentosBr.valid_cpf?(45698394823) => # true
35
+ # DocumentosBr.valid_cpf?("45698394823") => # true
36
+ # DocumentosBr.valid_cpf?("456.983.948-23") => # true
37
+ def self.valid_cpf?(cpf_number)
38
+ cpf_number.to_s.valid_cpf?
39
+ end
40
+
41
+ # Verifica se um CPF é válido.
42
+ #
43
+ # Exemplo:
44
+ # DocumentosBr.cpf_valido?(45698394823) => # true
45
+ # DocumentosBr.cpf_valido?("45698394823") => # true
46
+ # DocumentosBr.cpf_valido?("456.983.948-23") => # true
47
+ def self.cpf_valido?(cpf_number)
48
+ self.valid_cpf?(cpf_number)
49
+ end
50
+
51
+ # Gera um número de CNPJ.
52
+ #
53
+ # Exemplo:
54
+ # DocumentosBr.cnpj => # "61287395000140"
55
+ def self.cnpj
56
+ CnpjUtils.cnpj
57
+ end
58
+
59
+ # Gera um número de Cnpj formatado.
60
+ #
61
+ # Exemplo:
62
+ # DocumentosBr.cnpj_formatted => # "61.287.395/0001-40"
63
+ def self.cnpj_formatted
64
+ CnpjUtils.cnpj_formatted
65
+ end
66
+
67
+ # Gera um número de Cnpj formatado.
68
+ #
69
+ # Exemplo:
70
+ # DocumentosBr.cnpj_formatado => # "61.287.395/0001-40"
71
+ def self.cnpj_formatado
72
+ self.cnpj_formatted
73
+ end
74
+
75
+ # Verifica se um Cnpj é válido.
76
+ #
77
+ # Exemplo:
78
+ # DocumentosBr.valid_cnpj?(61287395000140) => # true
79
+ # DocumentosBr.valid_cnpj?("61287395000140") => # true
80
+ # DocumentosBr.valid_cnpj?("61.287.395/0001-40") => # true
81
+ def self.valid_cnpj?(cnpj_number)
82
+ cnpj_number.to_s.valid_cnpj?
83
+ end
84
+
85
+ # Verifica se um Cnpj é válido.
86
+ #
87
+ # Exemplo:
88
+ # DocumentosBr.cnpj_valido?(61287395000140) => # true
89
+ # DocumentosBr.cnpj_valido?("61287395000140") => # true
90
+ # DocumentosBr.cnpj_valido?("61.287.395/0001-40") => # true
91
+ def self.cnpj_valido?(cnpj_number)
92
+ self.valid_cnpj?(cnpj_number)
93
+ end
94
+
95
+ # Gera um número de Título de Eleitor.
96
+ #
97
+ # Exemplo:
98
+ # DocumentosBr.titulo_eleitor => # "023434561340"
99
+ def self.titulo_eleitor
100
+ TituloEleitorUtils.titulo_eleitor
101
+ end
102
+
103
+ # Gera um número de Título de Eleitor formatado.
104
+ #
105
+ # Exemplo:
106
+ # DocumentosBr.titulo_eleitor_formatted => # "0234.3456.1340"
107
+ def self.titulo_eleitor_formatted
108
+ TituloEleitorUtils.titulo_eleitor_formatted
109
+ end
110
+
111
+ # Gera um número de Título de Eleitor formatado.
112
+ #
113
+ # Exemplo:
114
+ # DocumentosBr.titulo_eleitor_formatado => # "0234.3456.1340"
115
+ def self.titulo_eleitor_formatado
116
+ self.titulo_eleitor_formatted
117
+ end
118
+
119
+ # Verifica se um Título de Eleitor é válido.
120
+ #
121
+ # Exemplo:
122
+ # DocumentosBr.valid_titulo_eleitor?(023434561340) => # true
123
+ # DocumentosBr.valid_titulo_eleitor?("023434561340") => # true
124
+ # DocumentosBr.valid_titulo_eleitor?("0234.3456.1340") => # true
125
+ def self.valid_titulo_eleitor?(titulo_eleitor_number)
126
+ titulo_eleitor_number.valid_titulo_eleitor?
127
+ end
128
+
129
+ # Verifica se um Título de Eleitor é válido.
130
+ #
131
+ # Exemplo:
132
+ # DocumentosBr.titulo_eleitor_valido?(023434561340) => # true
133
+ # DocumentosBr.titulo_eleitor_valido?("023434561340") => # true
134
+ # DocumentosBr.titulo_eleitor_valido?("0234.3456.1340") => # true
135
+ def self.titulo_eleitor_valido?(titulo_eleitor_number)
136
+ self.valid_titulo_eleitor?(titulo_eleitor_number)
137
+ end
138
+
139
+ # Para saber a qual unidade federativa o Título de Eleitor pertence:
140
+ #
141
+ # Exemplo:
142
+ # DocumentosBr.titulo_eleitor_province("759026311727") => # "TO"
143
+ def self.titulo_eleitor_province(titulo_eleitor_number)
144
+ TituloEleitorUtils.titulo_eleitor_province(titulo_eleitor_number)
145
+ end
146
+
147
+ # Para saber a qual unidade federativa o Título de Eleitor pertence:
148
+ #
149
+ # Exemplo:
150
+ # DocumentosBr.uf_do_titulo_eleitor("759026311727") => # "TO"
151
+ def self.uf_do_titulo_eleitor(titulo_eleitor_number)
152
+ self.titulo_eleitor_province(titulo_eleitor_number)
153
+ end
154
+ end
@@ -0,0 +1,114 @@
1
+ require "spec_helper"
2
+
3
+ describe "DocumentosBr" do
4
+ context 'CPFUtils' do
5
+ it ".cpf" do
6
+ valid_cpf = DocumentosBr.cpf
7
+ expect(valid_cpf).to be_a_kind_of(String)
8
+ expect(valid_cpf.length).to eql(11)
9
+ end
10
+
11
+ it ".cpf_formatted" do
12
+ valid_cpf = DocumentosBr.cpf_formatted
13
+ expect(valid_cpf).to match(/^[+-]?[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}+$/)
14
+ end
15
+
16
+ it ".cpf_formatado" do
17
+ valid_cpf = DocumentosBr.cpf_formatado
18
+ expect(valid_cpf).to match(/^[+-]?[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}+$/)
19
+ end
20
+
21
+ it ".valid_cpf?" do
22
+ valid_cpf = DocumentosBr.cpf
23
+ expect(DocumentosBr.valid_cpf? valid_cpf).to be_true
24
+ end
25
+
26
+ it ".cpf_valido?" do
27
+ cpf_valido = DocumentosBr.cpf
28
+ expect(DocumentosBr.cpf_valido? cpf_valido).to be_true
29
+ end
30
+
31
+ it ".valid_cpf? - be false" do
32
+ invalid_cpf = "123.456.789-12"
33
+ expect(DocumentosBr.valid_cpf? invalid_cpf).to be_false
34
+ end
35
+ end
36
+
37
+ context 'CnpjUtils' do
38
+ it ".cnpj" do
39
+ valid_cnpj = DocumentosBr.cnpj
40
+ expect(valid_cnpj).to be_a_kind_of(String)
41
+ expect(valid_cnpj.length).to eql(14)
42
+ end
43
+
44
+ it ".cnpj_formatted" do
45
+ valid_cnpj = DocumentosBr.cnpj_formatted
46
+ expect(valid_cnpj).to match(/^[+-]?[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
47
+ end
48
+
49
+ it ".cnpj_formatado" do
50
+ valid_cnpj = DocumentosBr.cnpj_formatado
51
+ expect(valid_cnpj).to match(/^[+-]?[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
52
+ end
53
+
54
+ it ".valid_cnpj?" do
55
+ valid_cnpj = DocumentosBr.cnpj
56
+ expect(DocumentosBr.valid_cnpj? valid_cnpj).to be_true
57
+ end
58
+
59
+ it ".cnpj_valido?" do
60
+ cnpj_valido = DocumentosBr.cnpj
61
+ expect(DocumentosBr.cnpj_valido? cnpj_valido).to be_true
62
+ end
63
+
64
+ it ".valid_cnpj? - be false" do
65
+ invalid_cnpj = "12.345.678/0001-12"
66
+ expect(DocumentosBr.valid_cnpj? invalid_cnpj).to be_false
67
+ end
68
+ end
69
+
70
+ context 'TituloEleitorUtils' do
71
+ it ".titulo_eleitor" do
72
+ valid_titulo_eleitor = DocumentosBr.titulo_eleitor
73
+ expect(valid_titulo_eleitor).to be_a_kind_of(String)
74
+ expect(valid_titulo_eleitor[8,2].to_i).to be >= 1
75
+ expect(valid_titulo_eleitor[8,2].to_i).to be <= 28
76
+ expect(valid_titulo_eleitor.length).to eql(12)
77
+ end
78
+
79
+ it ".titulo_eleitor_formatted" do
80
+ valid_titulo_eleitor = DocumentosBr.titulo_eleitor_formatted
81
+ expect(valid_titulo_eleitor).to match(/^[0-9]{4}\.[0-9]{4}\.[0-9]{4}+$/)
82
+ end
83
+
84
+ it ".titulo_eleitor_formatado" do
85
+ valid_titulo_eleitor = DocumentosBr.titulo_eleitor_formatado
86
+ expect(valid_titulo_eleitor).to match(/^[0-9]{4}\.[0-9]{4}\.[0-9]{4}+$/)
87
+ end
88
+
89
+ it ".valid_titulo_eleitor?" do
90
+ valid_titulo_eleitor = DocumentosBr.titulo_eleitor
91
+ expect(DocumentosBr.valid_titulo_eleitor? valid_titulo_eleitor).to be_true
92
+ end
93
+
94
+ it ".titulo_eleitor_valido?" do
95
+ titulo_eleitor_valido = DocumentosBr.titulo_eleitor
96
+ expect(DocumentosBr.titulo_eleitor_valido? titulo_eleitor_valido).to be_true
97
+ end
98
+
99
+ it ".valid_titulo_eleitor? - be false" do
100
+ invalid_titulo_eleitor = "1234.5678.9101"
101
+ expect(DocumentosBr.valid_titulo_eleitor? invalid_titulo_eleitor).to be_false
102
+ end
103
+
104
+ it ".titulo_eleitor_province" do
105
+ state = DocumentosBr.titulo_eleitor_province("759026311727")
106
+ expect(state).to eql("TO")
107
+ end
108
+
109
+ it ".uf_do_titulo_eleitor" do
110
+ state = DocumentosBr.uf_do_titulo_eleitor("759026311727")
111
+ expect(state).to eql("TO")
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,14 @@
1
+ # Require Code Climate Test Reporter
2
+ require "codeclimate-test-reporter"
3
+
4
+ # Starts Code Climate Test Reporter
5
+ CodeClimate::TestReporter.start
6
+
7
+ # Require Coveralls for Test cover
8
+ require 'coveralls'
9
+
10
+ # Starts Coderalls
11
+ Coveralls.wear!
12
+
13
+ # Require other files of project
14
+ require "documentos_br"
@@ -0,0 +1,235 @@
1
+ require "spec_helper"
2
+
3
+ describe String do
4
+ context 'CpfUtils' do
5
+ it "#valid_cpf_mask?" do
6
+ expect("123.456.789-12".valid_cpf_mask?).to be_true
7
+ expect("12345678912".valid_cpf_mask?).to be_true
8
+ end
9
+
10
+ it "#mascara_de_cpf_valida?" do
11
+ expect("123.456.789-12".mascara_de_cpf_valida?).to be_true
12
+ expect("12345678912".mascara_de_cpf_valida?).to be_true
13
+ end
14
+
15
+ it "#valid_cpf_mask? - be false" do
16
+ expect("123..456.789-12".valid_cpf_mask?).to be_false
17
+ expect("123.456.789--12".valid_cpf_mask?).to be_false
18
+ expect("123.456.789-1E".valid_cpf_mask?).to be_false
19
+ end
20
+
21
+ it "#mascara_de_cpf_valida? - be false" do
22
+ expect("123..456.789-12".mascara_de_cpf_valida?).to be_false
23
+ expect("123.456.789--12".mascara_de_cpf_valida?).to be_false
24
+ expect("123.456.789-1E".mascara_de_cpf_valida?).to be_false
25
+ end
26
+
27
+ it "#valid_cpf?" do
28
+ cpf = DocumentosBr.cpf
29
+ expect(cpf.valid_cpf?).to be_true
30
+ end
31
+
32
+ it "#cpf_valido?" do
33
+ cpf = DocumentosBr.cpf
34
+ expect(cpf.cpf_valido?).to be_true
35
+ end
36
+
37
+ it "#to_cpf_format?" do
38
+ cpf = DocumentosBr.cpf
39
+ expect(cpf.to_cpf_format).to match(/^[+-]?[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}+$/)
40
+ end
41
+
42
+ it "#para_formato_cpf?" do
43
+ cpf = DocumentosBr.cpf
44
+ expect(cpf.para_formato_cpf).to match(/^[+-]?[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}+$/)
45
+ end
46
+
47
+ it "#generate_cpf" do
48
+ valid_cpf = DocumentosBr.cpf
49
+ final_cpf = valid_cpf[0..8].generate_cpf
50
+
51
+ expect(final_cpf).to be_a_kind_of(String)
52
+ expect(final_cpf.length).to eql(11)
53
+ end
54
+
55
+ it "#gerar_cpf" do
56
+ valid_cpf = DocumentosBr.cpf
57
+ final_cpf = valid_cpf[0..8].gerar_cpf
58
+
59
+ expect(final_cpf).to be_a_kind_of(String)
60
+ expect(final_cpf.length).to eql(11)
61
+ end
62
+
63
+ it "#gerar_cpf_formatado" do
64
+ valid_cpf = DocumentosBr.cpf
65
+ final_cpf = valid_cpf[0..8].gerar_cpf_formatado
66
+
67
+ expect(final_cpf).to match(/^[+-]?[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}+$/)
68
+ end
69
+
70
+ it "#generate_cpf_formatted" do
71
+ valid_cpf = DocumentosBr.cpf
72
+ final_cpf = valid_cpf[0..8].generate_cpf_formatted
73
+
74
+ expect(final_cpf).to match(/^[+-]?[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}+$/)
75
+ end
76
+ end
77
+
78
+ context 'CnpjUtils' do
79
+ it "#valid_cnpj_mask?" do
80
+ expect("61.287.395/0001-40".valid_cnpj_mask?).to be_true
81
+ expect("61287395000140".valid_cnpj_mask?).to be_true
82
+ end
83
+
84
+ it "#mascara_de_cnpj_valida?" do
85
+ expect("61.287.395/0001-40".mascara_de_cnpj_valida?).to be_true
86
+ expect("61287395000140".mascara_de_cnpj_valida?).to be_true
87
+ end
88
+
89
+ it "#valid_cnpj_mask? - be false" do
90
+ expect("45.698.394//0001-54".valid_cnpj_mask?).to be_false
91
+ expect("45.698..394/0001-54".valid_cnpj_mask?).to be_false
92
+ expect("45.698.394/00O1-54".valid_cnpj_mask?).to be_false
93
+ end
94
+
95
+ it "#mascara_de_cnpj_valida? - be false" do
96
+ expect("45.698.394//0001-54".mascara_de_cnpj_valida?).to be_false
97
+ expect("45.698..394/0001-54".mascara_de_cnpj_valida?).to be_false
98
+ expect("45.698.394/00O1-54".mascara_de_cnpj_valida?).to be_false
99
+ end
100
+
101
+ it "#valid_cnpj?" do
102
+ cnpj = CnpjUtils.cnpj
103
+ expect(cnpj.valid_cnpj?).to be_true
104
+ end
105
+
106
+ it "#cnpj_valido?" do
107
+ cnpj = CnpjUtils.cnpj
108
+ expect(cnpj.cnpj_valido?).to be_true
109
+ end
110
+
111
+ it "#to_cnpj_format?" do
112
+ cnpj = CnpjUtils.cnpj
113
+ expect(cnpj.to_cnpj_format).to match(/^[+-]?[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
114
+ end
115
+
116
+ it "#para_formato_cnpj?" do
117
+ cnpj = CnpjUtils.cnpj
118
+ expect(cnpj.para_formato_cnpj).to match(/^[+-]?[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
119
+ end
120
+
121
+ it "#generate_cnpj" do
122
+ valid_cnpj = CnpjUtils.cnpj
123
+ final_cnpj = valid_cnpj[0..11].generate_cnpj
124
+
125
+ expect(final_cnpj).to be_a_kind_of(String)
126
+ expect(final_cnpj.length).to eql(14)
127
+ end
128
+
129
+ it "#gerar_cnpj" do
130
+ valid_cnpj = CnpjUtils.cnpj
131
+ final_cnpj = valid_cnpj[0..11].gerar_cnpj
132
+
133
+ expect(final_cnpj).to be_a_kind_of(String)
134
+ expect(final_cnpj.length).to eql(14)
135
+ end
136
+
137
+ it "#gerar_cnpj_formatado" do
138
+ valid_cnpj = CnpjUtils.cnpj
139
+ final_cnpj = valid_cnpj[0..11].gerar_cnpj_formatado
140
+
141
+ expect(final_cnpj).to match(/^[+-]?[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
142
+ end
143
+
144
+ it "#generate_cnpj_formatted" do
145
+ valid_cnpj = CnpjUtils.cnpj
146
+ final_cnpj = valid_cnpj[0..11].generate_cnpj_formatted
147
+
148
+ expect(final_cnpj).to match(/^[+-]?[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
149
+ end
150
+ end
151
+
152
+ context 'TituloEleitorUtils' do
153
+ it "#valid_titulo_eleitor_mask?" do
154
+ expect("7590.2631.1727".valid_titulo_eleitor_mask?).to be_true
155
+ expect("759026311727".valid_titulo_eleitor_mask?).to be_true
156
+ end
157
+
158
+ it "#mascara_de_titulo_eleitor_valida?" do
159
+ expect("7590.2631.1727".mascara_de_titulo_eleitor_valida?).to be_true
160
+ expect("759026311727".mascara_de_titulo_eleitor_valida?).to be_true
161
+ end
162
+
163
+ it "#valid_titulo_eleitor_mask? - be false" do
164
+ expect("7590.26E1.1727".valid_titulo_eleitor_mask?).to be_false
165
+ expect("7590..2631.1727".valid_titulo_eleitor_mask?).to be_false
166
+ expect("7590.26311727".valid_titulo_eleitor_mask?).to be_false
167
+ end
168
+
169
+ it "#mascara_de_titulo_eleitor_valida? - be false" do
170
+ expect("7590.26E1.1727".mascara_de_titulo_eleitor_valida?).to be_false
171
+ expect("7590..2631.1727".mascara_de_titulo_eleitor_valida?).to be_false
172
+ expect("7590.2631..1727".mascara_de_titulo_eleitor_valida?).to be_false
173
+ end
174
+
175
+ it "#valid_titulo_eleitor?" do
176
+ titulo_eleitor = DocumentosBr.titulo_eleitor
177
+ expect(titulo_eleitor.valid_titulo_eleitor?).to be_true
178
+ end
179
+
180
+ it "#titulo_eleitor_valido?" do
181
+ titulo_eleitor = DocumentosBr.titulo_eleitor
182
+ expect(titulo_eleitor.titulo_eleitor_valido?).to be_true
183
+ end
184
+
185
+ it "#to_titulo_eleitor_format?" do
186
+ titulo_eleitor = DocumentosBr.titulo_eleitor
187
+ expect(titulo_eleitor.to_titulo_eleitor_format).to match(/^[0-9]{4}\.[0-9]{4}\.[0-9]{4}+$/)
188
+ end
189
+
190
+ it "#para_formato_titulo_eleitor?" do
191
+ titulo_eleitor = DocumentosBr.titulo_eleitor
192
+ expect(titulo_eleitor.para_formato_titulo_eleitor).to match(/^[0-9]{4}\.[0-9]{4}\.[0-9]{4}+$/)
193
+ end
194
+
195
+ it "#generate_titulo_eleitor" do
196
+ valid_titulo_eleitor = DocumentosBr.titulo_eleitor
197
+ final_titulo_eleitor = valid_titulo_eleitor[0..9].generate_titulo_eleitor
198
+
199
+ expect(final_titulo_eleitor).to be_a_kind_of(String)
200
+ expect(final_titulo_eleitor.size).to eql(12)
201
+ end
202
+
203
+ it "#gerar_titulo_eleitor" do
204
+ valid_titulo_eleitor = DocumentosBr.titulo_eleitor
205
+ final_titulo_eleitor = valid_titulo_eleitor[0..9].gerar_titulo_eleitor
206
+
207
+ expect(final_titulo_eleitor).to be_a_kind_of(String)
208
+ expect(final_titulo_eleitor.size).to eql(12)
209
+ end
210
+
211
+ it "#gerar_titulo_eleitor_formatado" do
212
+ valid_titulo_eleitor = DocumentosBr.titulo_eleitor
213
+ final_titulo_eleitor = valid_titulo_eleitor[0..9].gerar_titulo_eleitor_formatado
214
+
215
+ expect(final_titulo_eleitor).to match(/^[0-9]{4}\.[0-9]{4}\.[0-9]{4}+$/)
216
+ end
217
+
218
+ it "#generate_titulo_eleitor_formatted" do
219
+ valid_titulo_eleitor = DocumentosBr.titulo_eleitor
220
+ final_titulo_eleitor = valid_titulo_eleitor[0..9].generate_titulo_eleitor_formatted
221
+
222
+ expect(final_titulo_eleitor).to match(/^[0-9]{4}\.[0-9]{4}\.[0-9]{4}+$/)
223
+ end
224
+
225
+ it "#titulo_eleitor_province" do
226
+ state = "759026311727".titulo_eleitor_province
227
+ expect(state).to eql("TO")
228
+ end
229
+
230
+ it "#uf_do_titulo_eleitor" do
231
+ state = "759026311727".uf_do_titulo_eleitor
232
+ expect(state).to eql("TO")
233
+ end
234
+ end
235
+ end
metadata ADDED
@@ -0,0 +1,147 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: documentos_br
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jackson Pires
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 2.14.1
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 2.14.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: cpf_utils
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.1.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 1.1.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: cnpj_utils
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 1.0.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 1.0.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: titulo_eleitor_utils
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 1.0.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 1.0.0
97
+ description: |-
98
+ Uma 'wrapper' para as Gems 'CpfUtils', 'CnpjUtils' e
99
+ 'TituloEleitorUtils'.
100
+ email:
101
+ - jackson.pires@gmail.com
102
+ executables: []
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - .gitignore
107
+ - .rspec
108
+ - .travis.yml
109
+ - Gemfile
110
+ - LICENSE.txt
111
+ - README.md
112
+ - Rakefile
113
+ - documentos_br.gemspec
114
+ - lib/documentos_br.rb
115
+ - lib/documentos_br/version.rb
116
+ - spec/documentos_br_spec.rb
117
+ - spec/spec_helper.rb
118
+ - spec/string_spec.rb
119
+ homepage: https://github.com/jacksonpires/documentos_br
120
+ licenses:
121
+ - MIT
122
+ metadata: {}
123
+ post_install_message:
124
+ rdoc_options: []
125
+ require_paths:
126
+ - lib
127
+ required_ruby_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ requirements: []
138
+ rubyforge_project:
139
+ rubygems_version: 2.0.3
140
+ signing_key:
141
+ specification_version: 4
142
+ summary: DocumentosBr é um 'wrapper' para a suíte de funcionalidades das Gems 'CpfUtils',
143
+ 'CnpjUtils' e 'TituloEleitorUtils'.
144
+ test_files:
145
+ - spec/documentos_br_spec.rb
146
+ - spec/spec_helper.rb
147
+ - spec/string_spec.rb