brval 0.7.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4618b4783cbc5229fb9b7bc50ead9ec21789fef74a51b5ad998204912509af47
4
+ data.tar.gz: 020c85c74febb5e40a12db2c2e3977e604af7093dbb8a99dc8d67da31cb8db57
5
+ SHA512:
6
+ metadata.gz: 2e0b08c639776a7667150ded10de430653cf103407419cfe809c5b4c7931c378b8e2bbf099428ccf790a8cbd08b1432b0d63330cc10697b00943ab911bb5fac1
7
+ data.tar.gz: ad0ae0eb5992eb6aeedd8190c50ff516971b4bfbc7c352c4f9ddfef58b7a3d1ac2b9d8eda502c10c43a49d3a5aef80f203e536afb8cf97fd9f36153ce25d44c8
data/README.md ADDED
@@ -0,0 +1,92 @@
1
+ # Brval
2
+ This is a gem to validate many Brazilian codes. Because it's common to use many gems, libs and even copy and paste methods found around the internet to do that.
3
+
4
+ So the idea of Brval gem is: reunite all those validations methods in one single gem, making our lives even "easier" to develop Ruby apps.
5
+
6
+ [Link para ler as instruções em português](https://github.com/LucasAndrad/brval/wiki/Instru%C3%A7%C3%B5es-em-portugu%C3%AAs) (link to read the instructions in portuguese)
7
+
8
+ NPM package for JS projects coming soon!
9
+
10
+ ## Installation
11
+
12
+ Add this line to your Gemfile
13
+
14
+ ```ruby
15
+ gem 'brval'
16
+ ```
17
+
18
+ Or run it direct on terminal:
19
+
20
+ $ gem install brval
21
+
22
+ ## Usage
23
+
24
+ To use Brval gem is quite simple, just call the module `Brval` with the validation you wish.
25
+ Examples:
26
+
27
+ ```ruby
28
+ # CPF valid
29
+ Brval.cpf_valid?('79411449050') # => true
30
+
31
+ # CPF invalid
32
+ Brval.cpf_valid?('79411400000') # => false
33
+
34
+ # CNH valid
35
+ Brval.cnh_valid?('30142868570') # => true
36
+
37
+ # Título de eleitor valid
38
+ Brval.te_valid?('264632480167') # => true
39
+
40
+ # Cep valid
41
+ Brval.cep_valid?('70297-400') # => true
42
+ ```
43
+
44
+ ### Lista da Funções
45
+ ### Functions List
46
+ Above is the list with all the functions and validations avaible on Brval gem, after that a resume explaining about CEP validation:
47
+
48
+ | Function | Return | Description |
49
+ |-------------------------|--------------|-----------|
50
+ | Brval.cep_valid? |true/false | |
51
+ | Brval.cep_info? |json | Json with cep information |
52
+ | Brval.cnh_valid? |true/false | |
53
+ | Brval.cnpj_valid? |true/false | |
54
+ | Brval.cpf_valid? |true/false | |
55
+ | Brval.credit_card_valid?|true/false | Number of credit card with 16 digits |
56
+ | Brval.lawsuit_valid? |true/false | Number of judicial process|
57
+ | Brval.pis_valid? |true/false | Same validation for: PIS/PASEP/NIT |
58
+ | Brval.renavam_valid? |true/false | |
59
+ | Brval.te_valid? |true/false | te = "Título de eleitor" |
60
+
61
+
62
+ ### CEP Validation
63
+ Brazilian postal code, CEP, doesn't has any formula or calculation to check is some CEP is valid or not, the only way to know that is searching in a database with all CEP's in Brazil
64
+
65
+ Apparently Correios doesn't provides any database with all CEP's of Brazil, so some devs developer their own services to search for a CEP info, some of those services are public API's and anyone can use it.
66
+
67
+ Considering this, Brval does the CEP validation following this flow:
68
+
69
+ - `Brval.cep_valid?('00000000')`
70
+ - The gem does a first query at [Via Cep API](https://viacep.com.br/)
71
+ - If the CEP is not found, the gem does a **second** query at [WideNet API](http://apps.widenet.com.br/busca-cep)
72
+ - If again, the CEP is not found the gem does third query to search the CEP at [Postmon API](https://postmon.com.br/)
73
+ - And finally, if the CEP is not found in any of these three API's the gem Brval will say that this CEP doesn't exists.
74
+
75
+ The gem uses the same procedure to get the info of some CEP with the function: `Brval.cep_info(00000000)`
76
+
77
+ **OBS:** the gem "only" search in three API's, so if a CEP exists but any of these API's doesn't have it, the gem will return a false negative.
78
+
79
+
80
+ ## Contributing
81
+
82
+ If you miss any validation, create an Issue explaining about it, if possible, leave some links with the calculation or any formula example about the validation. I will be happy trying to implement that to help you.
83
+
84
+ If you want to contribute with some code create an issue so we can discuss about, if everyone agree with your idea, create a fork, create your branch and send your pull request explaining the details about your PR.
85
+
86
+ Don't forget the tests, Brval use Rspec to test. Update the README with the new info. Also, try to follow the gem pattern to implement your contribution.
87
+
88
+ Thanks!
89
+
90
+ ## License
91
+
92
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/lib/brval.rb ADDED
@@ -0,0 +1,34 @@
1
+ require 'httparty'
2
+ require 'brval/version'
3
+
4
+ require 'brval/val'
5
+ require 'brval/cnh_call'
6
+ require 'brval/cnpj_call'
7
+ require 'brval/cpf_call'
8
+ require 'brval/credit_card_call'
9
+ require 'brval/lawsuit_call'
10
+ require 'brval/pis_call'
11
+ require 'brval/renavam_call'
12
+ require 'brval/te_call'
13
+
14
+ require 'brval/cep/cep_service'
15
+ require 'brval/cep/postmon'
16
+ require 'brval/cep/via_cep'
17
+ require 'brval/cep/widenet'
18
+ require 'brval/cep_call'
19
+
20
+ # main module
21
+ module Brval
22
+ extend CnhCall
23
+ extend CnpjCall
24
+ extend CpfCall
25
+ extend CreditCardCall
26
+ extend LawsuitCall
27
+ extend PisCall
28
+ extend RenavamCall
29
+ extend TeCall
30
+
31
+ extend CepCall
32
+
33
+ class Error < StandardError; end
34
+ end
@@ -0,0 +1,34 @@
1
+ module Cep
2
+ class CepService
3
+ attr_accessor :cep, :url
4
+
5
+ def initialize cep
6
+ @cep = cep.to_s.tr('^0-9', '')
7
+ end
8
+
9
+ def check
10
+ return false if @cep.nil? || @cep.length > 8
11
+ json = load_cep_json
12
+ json_valid?(json)
13
+ end
14
+
15
+ def info
16
+ return response_error if @cep.nil? || @cep.length > 8
17
+ json = load_cep_json
18
+ json_valid?(json) ? translate_params(json) : response_error
19
+ end
20
+
21
+ private
22
+
23
+ def load_cep_json
24
+ response = HTTParty.get(@url)
25
+ return nil if response.code != 200
26
+ JSON.parse(response.body)
27
+ end
28
+
29
+ def response_error
30
+ { 'error' => "Nenhum cep encontrado para: #{@cep}" }
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,37 @@
1
+ module Cep
2
+ class Postmon < CepService
3
+
4
+ # Thank you Postmon for this API
5
+ # https://postmon.com.br/
6
+
7
+ URL_HOME = 'https://api.postmon.com.br/v1/cep/'.freeze
8
+
9
+ def initialize cep
10
+ super
11
+ @url = URL_HOME + @cep
12
+ end
13
+
14
+ private
15
+
16
+ def json_valid? json
17
+ return false if json.nil?
18
+ json.key?('bairro') && json.key?('logradouro') && json.key?('cidade') && json.key?('estado')
19
+ end
20
+
21
+ def translate_params json
22
+ json['cep'] = json['cep'].insert(5, '-')
23
+ json['address'] = json.delete 'logradouro'
24
+ json['complement'] = ''
25
+ json['neighborhood'] = json.delete 'bairro'
26
+ json['city'] = json.delete 'cidade'
27
+ json['state'] = json.delete 'estado'
28
+ json['unit'] = ''
29
+ json['ibge'] = json['cidade_info']['codigo_ibge']
30
+ json['gia'] = ''
31
+ json.delete 'estado_info'
32
+ json.delete 'cidade_info'
33
+ json
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,31 @@
1
+ module Cep
2
+ class ViaCep < CepService
3
+
4
+ URL_HOME = 'https://viacep.com.br/ws/'.freeze
5
+
6
+ def initialize cep
7
+ super
8
+ @url = URL_HOME + @cep + '/json'
9
+ end
10
+
11
+ private
12
+
13
+ def json_valid? json
14
+ return false if json.key?('erro')
15
+ json.key?('logradouro') && json.key?('bairro') && json.key?('localidade') && json.key?('uf')
16
+ end
17
+
18
+ def translate_params json
19
+ json['address'] = json.delete 'logradouro'
20
+ json['complement'] = json.delete 'complemento'
21
+ json['neighborhood'] = json.delete 'bairro'
22
+ json['city'] = json.delete 'localidade'
23
+ json['state'] = json.delete 'uf'
24
+ json['unit'] = json.delete 'unidade'
25
+ json['ibge'] = json.delete 'ibge'
26
+ json['gia'] = json.delete 'gia'
27
+ json
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,37 @@
1
+ module Cep
2
+ class Widenet < CepService
3
+
4
+ # Thank you WideNet for this API
5
+ # apps.widenet.com.br/busca-cep/api-de-consulta
6
+
7
+ URL_HOME = 'http://apps.widenet.com.br/busca-cep/api/cep/'.freeze
8
+
9
+ def initialize cep
10
+ super
11
+ @url = URL_HOME + @cep + '.json'
12
+ end
13
+
14
+ private
15
+
16
+ def json_valid? json
17
+ return false if json.key?('message')
18
+ json.key?('district') && json.key?('city') && json.key?('address') && json.key?('state')
19
+ end
20
+
21
+ def translate_params json
22
+ json.delete 'status'
23
+ json['cep'] = json.delete 'code'
24
+ json['address'] = json.delete 'address'
25
+ json['complement'] = ''
26
+ json['neighborhood'] = json.delete 'district'
27
+ json['city'] = json.delete 'city'
28
+ json['state'] = json.delete 'state'
29
+ json['unit'] = ''
30
+ json['ibge'] = ''
31
+ json['gia'] = ''
32
+ json
33
+ end
34
+
35
+
36
+ end
37
+ end
@@ -0,0 +1,40 @@
1
+ module Brval::CepCall
2
+
3
+ def cep_valid?(cep)
4
+ cep = cep.to_s.tr('^0-9', '')
5
+ return false if cep.nil? || cep.length > 8
6
+ call_apis_check(cep)
7
+ end
8
+
9
+ def cep_info(cep)
10
+ cep = cep.to_s.tr('^0-9', '')
11
+ return false if cep.nil? || cep.length > 8
12
+ call_apis_info(cep)
13
+ end
14
+
15
+ private
16
+
17
+ def call_apis_check(cep)
18
+ via = Cep::ViaCep.new(cep).check
19
+ widenet = Cep::Widenet.new(cep).check if via != true
20
+ postmon = Cep::Postmon.new(cep).check if via != true && widenet != true
21
+ return true if (via == true || widenet == true || postmon == true)
22
+ false
23
+ end
24
+
25
+ def call_apis_info(cep)
26
+ via = Cep::ViaCep.new(cep).info
27
+ if via.key?('error')
28
+ widenet = Cep::Widenet.new(cep).info
29
+ else
30
+ return via
31
+ end
32
+ if via.key?('error') && widenet.key?('error')
33
+ postmon = Cep::Postmon.new(cep).info
34
+ else
35
+ return widenet
36
+ end
37
+ return postmon
38
+ end
39
+
40
+ end
data/lib/brval/cnh.rb ADDED
@@ -0,0 +1,46 @@
1
+ module Brval
2
+ # Validate CNH
3
+ class Cnh < Val
4
+
5
+ private
6
+
7
+ def validate_code
8
+ return false if @code.length < 11
9
+ return false if @code[0] * 11 == @code
10
+
11
+ cnh_without_digits = @code[0..8]
12
+ cnh_digits = @code[-2..-1]
13
+ incr_dig2 = 0
14
+
15
+ sum = 0
16
+ mult = 9
17
+ (0..8).each do |i|
18
+ sum += cnh_without_digits[i].to_i * mult
19
+ mult -= 1
20
+ end
21
+
22
+ digit1 = sum % 11
23
+ incr_dig2 = -2 if digit1 == 10
24
+ digit1 = 0 if digit1 > 9
25
+
26
+ sum = 0
27
+ mult = 1
28
+ (0..8).each do |i|
29
+ sum += (cnh_without_digits[i].to_i * mult)
30
+ mult += 1
31
+ end
32
+
33
+ digit2 = if ((sum % 11) + incr_dig2) < 0
34
+ 11 + (sum % 11) + incr_dig2
35
+ else
36
+ (sum % 11) + incr_dig2
37
+ end
38
+ digit2 = 0 if digit2 > 9
39
+
40
+ dig_to_compare = digit1.to_s + digit2.to_s
41
+
42
+ return true if cnh_digits == dig_to_compare
43
+ false
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,11 @@
1
+ require "brval/cnh"
2
+
3
+ module Brval
4
+ module CnhCall
5
+
6
+ def cnh_valid? cnh
7
+ Cnh.new(cnh).valid?
8
+ end
9
+
10
+ end
11
+ end
data/lib/brval/cnpj.rb ADDED
@@ -0,0 +1,31 @@
1
+ module Brval
2
+ class Cnpj < Val
3
+
4
+ private
5
+
6
+ NULLS = %w{11111111111111 22222222222222 33333333333333 44444444444444 55555555555555 66666666666666 77777777777777 88888888888888 99999999999999 00000000000000}.freeze
7
+
8
+ # function from https://gist.github.com/lucascaton/1109488
9
+ def validate_code
10
+ return false if @code.nil?
11
+
12
+ value = @code.split('')
13
+ if value.length == 14
14
+ unless NULLS.include?(value.join)
15
+ value = value.collect{|x| x.to_i}
16
+ sum = value[0]*5+value[1]*4+value[2]*3+value[3]*2+value[4]*9+value[5]*8+value[6]*7+value[7]*6+value[8]*5+value[9]*4+value[10]*3+value[11]*2
17
+ sum = sum - (11*(sum/11))
18
+ result1 = (sum==0 || sum==1) ? 0 : 11 - sum
19
+ if result1 == value[12]
20
+ sum = value[0]*6+value[1]*5+value[2]*4+value[3]*3+value[4]*2+value[5]*9+value[6]*8+value[7]*7+value[8]*6+value[9]*5+value[10]*4+value[11]*3+value[12]*2
21
+ sum = sum - (11*(sum/11))
22
+ result2 = (sum == 0 || sum == 1) ? 0 : 11 - sum
23
+ return true if result2 == value[13] # valid CNPJ
24
+ end
25
+ end
26
+ end
27
+ false # invalid CNPJ
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,11 @@
1
+ require "brval/cnpj"
2
+
3
+ module Brval
4
+ module CnpjCall
5
+
6
+ def cnpj_valid? cnpj
7
+ Cnpj.new(cnpj).valid?
8
+ end
9
+
10
+ end
11
+ end
data/lib/brval/cpf.rb ADDED
@@ -0,0 +1,33 @@
1
+ module Brval
2
+ class Cpf < Val
3
+
4
+ private
5
+
6
+ NULLS = %w{12345678909 11111111111 22222222222 33333333333 44444444444 55555555555 66666666666 77777777777 88888888888 99999999999 00000000000 01234567890}.freeze
7
+
8
+ # function from https://gist.github.com/lucascaton/1109488
9
+ def validate_code
10
+ # remote_mask(cpf)
11
+ # Add errors after initialize CPF this class if cpf has wrong value
12
+ return false if @code.nil?
13
+
14
+ value = @code.split('')
15
+ if value.length == 11
16
+ unless NULLS.include?(value.join)
17
+ value = value.collect{|x| x.to_i}
18
+ sum = 10*value[0]+9*value[1]+8*value[2]+7*value[3]+6*value[4]+5*value[5]+4*value[6]+3*value[7]+2*value[8]
19
+ sum = sum - (11 * (sum/11))
20
+ result1 = (sum == 0 or sum == 1) ? 0 : 11 - sum
21
+ if result1 == value[9]
22
+ sum = value[0]*11+value[1]*10+value[2]*9+value[3]*8+value[4]*7+value[5]*6+value[6]*5+value[7]*4+value[8]*3+value[9]*2
23
+ sum = sum - (11 * (sum/11))
24
+ result2 = (sum == 0 or sum == 1) ? 0 : 11 - sum
25
+ return true if result2 == value[10] # valid CPF
26
+ end
27
+ end
28
+ end
29
+ return false # invalid CPF
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,11 @@
1
+ require "brval/cpf"
2
+
3
+ module Brval
4
+ module CpfCall
5
+
6
+ def cpf_valid? cpf
7
+ Cpf.new(cpf).valid?
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,41 @@
1
+ module Brval
2
+ class CreditCard < Val
3
+
4
+ private
5
+
6
+ # Calc from: http://datagenetics.com/blog/july42013/index.html
7
+ def validate_code
8
+ raise ArgumentError, 'Credit card number must have 16 digits' if @code.length != 16
9
+ value = @code.split('')
10
+ if value.length == 16
11
+ sum = sum_nums(value[0..14])
12
+ sum_complete = treat_sum(sum.digits.reverse)
13
+ return true if sum_complete - sum == value[15].to_i
14
+ end
15
+ false
16
+ end
17
+
18
+ def sum_nums nums
19
+ sum = 0
20
+ nums.each_with_index do |n, i|
21
+ num = n.to_i
22
+ if i%2 != 0
23
+ sum += num
24
+ else
25
+ new_num = (num*2).digits.sum
26
+ sum += new_num
27
+ end
28
+ end
29
+ sum
30
+ end
31
+
32
+ def treat_sum nums
33
+ if nums.last != 0
34
+ nums[0] = nums[0]+1
35
+ nums[nums.count-1] = 0
36
+ end
37
+ nums.join.to_i
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,11 @@
1
+ require "brval/credit_card"
2
+
3
+ module Brval
4
+ module CreditCardCall
5
+
6
+ def credit_card_valid? credit_card
7
+ CreditCard.new(credit_card).valid?
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ module Brval
2
+ class Lawsuit < Val
3
+
4
+ LENGTH = 20.freeze
5
+
6
+ private
7
+
8
+ def validate_code
9
+ return false if @code.length != LENGTH
10
+ dv = @code[7..8].to_i
11
+ num_calc = (@code[0..6]+@code[9..19]).to_i
12
+ dv_check = 98 - (num_calc*100).modulo(97)
13
+ dv == dv_check ? true : false
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ require "brval/lawsuit"
2
+
3
+ module Brval
4
+ module LawsuitCall
5
+
6
+ def lawsuit_valid? lawsuit
7
+ Lawsuit.new(lawsuit).valid?
8
+ end
9
+
10
+ end
11
+ end
data/lib/brval/pis.rb ADDED
@@ -0,0 +1,21 @@
1
+ module Brval
2
+ class Pis < Val
3
+
4
+ private
5
+
6
+ def validate_code
7
+ return false if @code.nil?
8
+
9
+ value = @code.split('')
10
+ if value.length == 11
11
+ value = value.collect{|x| x.to_i}
12
+ sum = 3*value[0] + 2*value[1] + 9*value[2] + 8*value[3] + 7*value[4] + 6*value[5] + 5*value[6] + 4*value[7] + 3*value[8] + 2*value[9]
13
+ result = 11 - sum.modulo(11)
14
+ return true if result == value[10]
15
+ return true if value[10] == 0 && (result == 10 || result == 11)
16
+ end
17
+ return false
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ require "brval/pis"
2
+
3
+ module Brval
4
+ module PisCall
5
+
6
+ def pis_valid? pis
7
+ Pis.new(pis).valid?
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,22 @@
1
+ module Brval
2
+ class Renavam < Val
3
+
4
+ private
5
+
6
+ def validate_code
7
+ @code = "00" + @code if @code.length == 9
8
+ ren_cut = @code[0..9]
9
+ ren_reverse = ren_cut.reverse[0..7]
10
+ sum = 0
11
+ (2..9).to_a.each do |i|
12
+ sum += ren_reverse[i-2].to_i * i
13
+ end
14
+ sum += @code[0].to_i*3 + @code[1].to_i*2
15
+ result1 = 11 - (sum % 11)
16
+ digit1 = (result1 == 10 || result1 == 11) ? 0 : result1
17
+ return true if @code[10].to_i == digit1
18
+ false
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ require "brval/renavam"
2
+
3
+ module Brval
4
+ module RenavamCall
5
+
6
+ def renavam_valid? renavam
7
+ Renavam.new(renavam).valid?
8
+ end
9
+
10
+ end
11
+ end
data/lib/brval/te.rb ADDED
@@ -0,0 +1,48 @@
1
+ # Te = Titulo Eleitoral
2
+ module Brval
3
+ class Te < Val
4
+
5
+ private
6
+
7
+ def validate_code
8
+ return false if @code.nil?
9
+ value = @code.split('')
10
+ if value.length == 12
11
+ value = value.collect{|x| x.to_i}
12
+ digit1 = calc_digit1(value)
13
+ digit2 = calc_digit2(value, digit1)
14
+ return true if value[10] == digit1 && value[11] == digit2
15
+ end
16
+
17
+ return false
18
+ end
19
+
20
+ def calc_digit1 nums
21
+ sum = nums[0]*9 + nums[1]*8 + nums[2]*7 + nums[3]*6 + nums[4]*5 + nums[5]*4 + nums[6]*3 + nums[7]*2
22
+ check_result(nums, sum)
23
+ end
24
+
25
+ def calc_digit2 nums, digit1
26
+ sum = nums[8]*4 + nums[9]*3 + digit1*2
27
+ check_result(nums, sum)
28
+ end
29
+
30
+ def check_result nums, sum
31
+ rest = sum.modulo(11)
32
+ if rest == 0 || rest == 1
33
+ if nums[8] == 0 && (nums[9] == 1 || nums[9] == 2)
34
+ if rest == 0
35
+ result = 1
36
+ else
37
+ result = 0
38
+ end
39
+ else
40
+ result = 0
41
+ end
42
+ else
43
+ result = 11 - rest
44
+ end
45
+ end
46
+
47
+ end
48
+ end
@@ -0,0 +1,11 @@
1
+ require "brval/te"
2
+
3
+ module Brval
4
+ module TeCall
5
+
6
+ def te_valid? te
7
+ Te.new(te).valid?
8
+ end
9
+
10
+ end
11
+ end
data/lib/brval/val.rb ADDED
@@ -0,0 +1,16 @@
1
+ module Brval
2
+ class Val
3
+
4
+ attr_accessor :code
5
+
6
+ def initialize(code)
7
+ raise ArgumentError, 'The br code informed is nil' if code.nil?
8
+ @code = code.tr('^0-9', '')
9
+ end
10
+
11
+ def valid?
12
+ validate_code
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ module Brval
2
+ VERSION = "0.7.0"
3
+ end
metadata ADDED
@@ -0,0 +1,193 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: brval
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.0
5
+ platform: ruby
6
+ authors:
7
+ - Lucas Andrade
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-01-20 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.17'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.17.3
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.17'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.17.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: rake
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '10.0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '10.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.8'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 3.8.0
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '3.8'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 3.8.0
67
+ - !ruby/object:Gem::Dependency
68
+ name: simplecov
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: 0.16.1
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: 0.16.1
81
+ - !ruby/object:Gem::Dependency
82
+ name: rubycritic
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '3.5'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '3.5'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rubocop
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: 0.62.0
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: 0.62.0
109
+ - !ruby/object:Gem::Dependency
110
+ name: json
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '2.1'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '2.1'
123
+ - !ruby/object:Gem::Dependency
124
+ name: httparty
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: 0.16.3
130
+ type: :runtime
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: 0.16.3
137
+ description: Gem to validates Brazilian codes, like CPF, CNPJ, CNH, PIS ...
138
+ email:
139
+ - lucasandrad@yandex.com
140
+ executables: []
141
+ extensions: []
142
+ extra_rdoc_files: []
143
+ files:
144
+ - README.md
145
+ - lib/brval.rb
146
+ - lib/brval/cep/cep_service.rb
147
+ - lib/brval/cep/postmon.rb
148
+ - lib/brval/cep/via_cep.rb
149
+ - lib/brval/cep/widenet.rb
150
+ - lib/brval/cep_call.rb
151
+ - lib/brval/cnh.rb
152
+ - lib/brval/cnh_call.rb
153
+ - lib/brval/cnpj.rb
154
+ - lib/brval/cnpj_call.rb
155
+ - lib/brval/cpf.rb
156
+ - lib/brval/cpf_call.rb
157
+ - lib/brval/credit_card.rb
158
+ - lib/brval/credit_card_call.rb
159
+ - lib/brval/lawsuit.rb
160
+ - lib/brval/lawsuit_call.rb
161
+ - lib/brval/pis.rb
162
+ - lib/brval/pis_call.rb
163
+ - lib/brval/renavam.rb
164
+ - lib/brval/renavam_call.rb
165
+ - lib/brval/te.rb
166
+ - lib/brval/te_call.rb
167
+ - lib/brval/val.rb
168
+ - lib/brval/version.rb
169
+ homepage: https://github.com/LucasAndrad/brval
170
+ licenses:
171
+ - MIT
172
+ metadata: {}
173
+ post_install_message:
174
+ rdoc_options: []
175
+ require_paths:
176
+ - lib
177
+ required_ruby_version: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ required_rubygems_version: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ requirements: []
188
+ rubyforge_project:
189
+ rubygems_version: 2.7.6
190
+ signing_key:
191
+ specification_version: 4
192
+ summary: Gem to validates many Brazilian codes
193
+ test_files: []