documentos_br 1.0.1

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 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