business-br 0.8.0 → 0.10.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 +5 -5
- data/Rakefile +5 -3
- data/business-br.gemspec +14 -17
- data/examples/cep.rb +4 -5
- data/lib/business-br.rb +3 -1
- data/lib/business-br/cep.rb +25 -28
- data/lib/business-br/cep/providers.rb +7 -7
- data/lib/business-br/cep/providers/base.rb +15 -13
- data/lib/business-br/cep/providers/postmon.rb +19 -18
- data/lib/business-br/cep/providers/republicavirtual.rb +16 -16
- data/lib/business-br/cnpj.rb +13 -11
- data/lib/business-br/cpf.rb +20 -18
- data/lib/business-br/version.rb +3 -1
- metadata +4 -29
- checksums.yaml.gz.sig +0 -2
- data.tar.gz.sig +0 -0
- data/certs/dvinciguerra.pem +0 -23
- metadata.gz.sig +0 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: be968efdb00276ee6fa87fe89f2f456ee0be28608ae30b37324ffec5e21edc56
|
|
4
|
+
data.tar.gz: e3d4f033d70eb58cd4ec345330388eecf63a2e34065b1d97c1c189ccebbc2994
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2487a471642a25e9a4674d07d89f95b204117aa15e47bd148bb630cd91decce6c61d8beaca71f3f1149016f40b98c75648fcf5927f9bf2fc7e52e13cc90441fa
|
|
7
|
+
data.tar.gz: b8dcddeaca0a6906935c5f278c8b4a9b254c489a62e6dcd634d37dca5eb65a6aa70479090fce12ad91f1ab33c33e666c960fd8d0b81f915aa7de9d462284299c
|
data/Rakefile
CHANGED
data/business-br.gemspec
CHANGED
|
@@ -1,33 +1,30 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
5
|
|
|
5
6
|
require 'business-br/version'
|
|
6
7
|
|
|
7
8
|
Gem::Specification.new do |spec|
|
|
8
|
-
spec.name =
|
|
9
|
+
spec.name = 'business-br'
|
|
9
10
|
spec.license = 'MIT'
|
|
10
11
|
spec.version = Business::BR::VERSION
|
|
11
|
-
spec.authors = [
|
|
12
|
-
spec.email = [
|
|
12
|
+
spec.authors = ['Daniel Vinciguerra']
|
|
13
|
+
spec.email = ['daniel.vinciguerra@bivee.com.br']
|
|
13
14
|
|
|
14
|
-
spec.summary =
|
|
15
|
-
spec.description =
|
|
16
|
-
spec.homepage =
|
|
15
|
+
spec.summary = 'This project provide classes for validations and conversions to use in brazilian ruby projects.'
|
|
16
|
+
spec.description = 'Business::BR is a namespace to place all validations like CPF, CNPJ, CEP and some other things to be used in a brazilian ruby project.'
|
|
17
|
+
spec.homepage = 'https://github.com/dvinciguerra/business-br'
|
|
17
18
|
|
|
18
19
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
19
|
-
spec.bindir =
|
|
20
|
-
spec.require_paths = [
|
|
20
|
+
spec.bindir = 'exe'
|
|
21
|
+
spec.require_paths = ['lib']
|
|
21
22
|
spec.required_ruby_version = '>= 2.0.0'
|
|
22
23
|
|
|
23
|
-
# secirity
|
|
24
|
-
spec.cert_chain = ['certs/dvinciguerra.pem']
|
|
25
|
-
spec.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0 =~ /gem\z/
|
|
26
|
-
|
|
27
24
|
# dependency
|
|
28
|
-
spec.add_development_dependency
|
|
29
|
-
spec.add_development_dependency
|
|
30
|
-
spec.add_development_dependency
|
|
25
|
+
spec.add_development_dependency 'bundler', '~> 1.12'
|
|
26
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
|
27
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
|
31
28
|
spec.add_development_dependency 'webmock', '~> 2.1', '>= 2.1.0'
|
|
32
29
|
|
|
33
30
|
spec.add_dependency 'rest-client', '~> 2.0'
|
data/examples/cep.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
require 'business-br'
|
|
4
5
|
|
|
@@ -8,7 +9,6 @@ validator = Business::BR::CEP.new
|
|
|
8
9
|
# turns from '13330-000' into '13330000'
|
|
9
10
|
cep = validator.normalize(cep)
|
|
10
11
|
|
|
11
|
-
|
|
12
12
|
# turns from '13330000' into '13330-000'
|
|
13
13
|
cep = validator.format(cep)
|
|
14
14
|
|
|
@@ -18,18 +18,17 @@ cep_region = validator.region(cep) # => ['SP']
|
|
|
18
18
|
# getting cep type
|
|
19
19
|
cep_type = validator.type(cep) # => 'LOGRADOURO'
|
|
20
20
|
|
|
21
|
-
|
|
22
21
|
# check if cep is valid
|
|
23
22
|
if validator.valid? '00000asd'
|
|
24
23
|
puts 'This CEP is valid'
|
|
25
|
-
else
|
|
24
|
+
else
|
|
26
25
|
puts 'This CEP is not valid... please try again!'
|
|
27
26
|
end
|
|
28
27
|
|
|
29
28
|
# getting cep information
|
|
30
|
-
cep = Business::BR::CEP.new
|
|
29
|
+
cep = Business::BR::CEP.new
|
|
31
30
|
if infor = cep.search_by('12345678')
|
|
32
31
|
puts "CEP: #{infor}"
|
|
33
32
|
else
|
|
34
|
-
puts
|
|
33
|
+
puts 'NOT FOUND'
|
|
35
34
|
end
|
data/lib/business-br.rb
CHANGED
data/lib/business-br/cep.rb
CHANGED
|
@@ -1,75 +1,72 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require_relative './cep/providers'
|
|
2
4
|
|
|
3
5
|
module Business::BR
|
|
4
6
|
class CEP
|
|
5
|
-
|
|
6
7
|
@@regions = [
|
|
7
8
|
['SP'],
|
|
8
9
|
['SP'],
|
|
9
|
-
[
|
|
10
|
+
%w[RJ ES],
|
|
10
11
|
['MG'],
|
|
11
|
-
[
|
|
12
|
-
[
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
['RS']
|
|
12
|
+
%w[BA SE],
|
|
13
|
+
%w[PE AL PB RN],
|
|
14
|
+
%w[CE PI MA PA AM AC AP RR],
|
|
15
|
+
%w[DF GO TO MT MG RO],
|
|
16
|
+
%w[PR SC],
|
|
17
|
+
['RS']
|
|
17
18
|
]
|
|
18
|
-
|
|
19
19
|
|
|
20
20
|
def initialize(opts = {})
|
|
21
21
|
@opts = opts || {}
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
|
|
25
24
|
def validate(cep)
|
|
26
25
|
return false unless cep =~ /^\d{5}-?\d{3}$/
|
|
27
26
|
return false unless cep.length == 8 || cep.length == 9
|
|
27
|
+
|
|
28
28
|
true
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
|
|
32
31
|
def valid?(cep)
|
|
33
32
|
validate(cep)
|
|
34
33
|
end
|
|
35
34
|
|
|
36
|
-
|
|
37
35
|
def normalize(cep)
|
|
38
|
-
|
|
36
|
+
if cep =~ /^(\d{5})-?(\d{3})$/
|
|
37
|
+
"#{Regexp.last_match(1)}#{Regexp.last_match(2)}"
|
|
38
|
+
end
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
|
|
42
41
|
def format(cep)
|
|
43
|
-
|
|
42
|
+
if cep =~ /^(\d{5})-?(\d{3})$/
|
|
43
|
+
"#{Regexp.last_match(1)}-#{Regexp.last_match(2)}"
|
|
44
|
+
end
|
|
44
45
|
end
|
|
45
|
-
|
|
46
46
|
|
|
47
47
|
def region(cep)
|
|
48
|
-
raise Exception
|
|
48
|
+
raise Exception, 'This cep is not valid' unless valid?(cep)
|
|
49
|
+
|
|
49
50
|
@@regions[cep[0].to_i]
|
|
50
51
|
end
|
|
51
52
|
|
|
52
|
-
|
|
53
53
|
def type(cep)
|
|
54
54
|
cep = normalize(cep)
|
|
55
55
|
suffix = cep.slice(5, 3).to_i
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
else 'CAIXAPOSTAL';
|
|
56
|
+
if suffix < 900 then 'LOGRADOURO'
|
|
57
|
+
elsif suffix < 960 then 'ESPECIAL'
|
|
58
|
+
elsif suffix < 970 then 'PROMOCIONAIS'
|
|
59
|
+
elsif suffix < 990 || suffix == 999 then 'CORREIOS'
|
|
60
|
+
else 'CAIXAPOSTAL'
|
|
62
61
|
end
|
|
63
62
|
end
|
|
64
63
|
|
|
65
|
-
def search_by(cep, provider:'Postmon')
|
|
64
|
+
def search_by(cep, provider: 'Postmon')
|
|
66
65
|
if cep_provider = Business::BR::CEP::Providers.get_provider(provider)
|
|
67
66
|
return cep_provider.search_by(cep)
|
|
68
67
|
end
|
|
68
|
+
|
|
69
69
|
nil
|
|
70
70
|
end
|
|
71
|
-
|
|
72
71
|
end
|
|
73
72
|
end
|
|
74
|
-
|
|
75
|
-
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require_relative './providers/base'
|
|
2
4
|
require_relative './providers/postmon'
|
|
3
5
|
require_relative './providers/republicavirtual'
|
|
@@ -6,18 +8,16 @@ module Business
|
|
|
6
8
|
module BR
|
|
7
9
|
class CEP
|
|
8
10
|
class Providers
|
|
9
|
-
|
|
10
11
|
def self.get_provider(provider)
|
|
11
12
|
return nil unless provider
|
|
13
|
+
|
|
12
14
|
begin
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return nil
|
|
15
|
+
provider_class = Business::BR::CEP::Providers.const_get(provider)
|
|
16
|
+
provider_class.new if provider_class
|
|
17
|
+
rescue StandardError
|
|
18
|
+
nil
|
|
18
19
|
end
|
|
19
20
|
end
|
|
20
|
-
|
|
21
21
|
end # Providers
|
|
22
22
|
end # CEP
|
|
23
23
|
end # BR
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rest-client'
|
|
2
4
|
|
|
3
5
|
module Business
|
|
@@ -8,24 +10,24 @@ module Business
|
|
|
8
10
|
attr_accessor :zipcode
|
|
9
11
|
|
|
10
12
|
protected
|
|
11
|
-
# response entity
|
|
12
|
-
def create_entity(json, extract:{})
|
|
13
|
-
json = json.class == String ? decode_json(json) : json
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
extracted[key] = (value.class == Symbol ? json[value] : value)
|
|
19
|
-
end
|
|
14
|
+
# response entity
|
|
15
|
+
def create_entity(json, extract: {})
|
|
16
|
+
json = json.class == String ? decode_json(json) : json
|
|
20
17
|
|
|
21
|
-
|
|
18
|
+
# getting informations
|
|
19
|
+
extracted = {}
|
|
20
|
+
extract.each do |key, value|
|
|
21
|
+
extracted[key] = (value.class == Symbol ? json[value] : value)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
JSON.parse(str, symbolize_names: true)
|
|
27
|
-
end
|
|
24
|
+
extracted
|
|
25
|
+
end
|
|
28
26
|
|
|
27
|
+
# decode json
|
|
28
|
+
def decode_json(str)
|
|
29
|
+
JSON.parse(str, symbolize_names: true)
|
|
30
|
+
end
|
|
29
31
|
end
|
|
30
32
|
end # Providers
|
|
31
33
|
end # CEP
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'json'
|
|
2
4
|
|
|
3
5
|
module Business
|
|
@@ -5,34 +7,33 @@ module Business
|
|
|
5
7
|
class CEP
|
|
6
8
|
class Providers
|
|
7
9
|
class Postmon < Base
|
|
8
|
-
|
|
9
10
|
def search_by(cep)
|
|
10
11
|
@zipcode = cep
|
|
11
12
|
begin
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
response = RestClient.get "http://api.postmon.com.br/v1/cep/#{@zipcode}"
|
|
14
|
+
parse_response(response.body)
|
|
14
15
|
rescue RestClient::ExceptionWithResponse => e
|
|
15
16
|
puts e.response if ENV['BUSINESS-BR_DEBUG']
|
|
16
|
-
|
|
17
|
+
nil
|
|
17
18
|
end
|
|
18
19
|
end
|
|
19
20
|
|
|
20
21
|
private
|
|
21
|
-
def parse_response(response)
|
|
22
|
-
json = JSON.parse(response, symbolize_names: true)
|
|
23
|
-
create_entity(
|
|
24
|
-
json, extract: {
|
|
25
|
-
zipcode: :cep,
|
|
26
|
-
street: :logradouro,
|
|
27
|
-
complement: :complemento,
|
|
28
|
-
neighborhood: :bairro,
|
|
29
|
-
city: :cidade,
|
|
30
|
-
state: "#{json[:estado_info][:nome]}",
|
|
31
|
-
uf: :estado
|
|
32
|
-
}
|
|
33
|
-
)
|
|
34
|
-
end
|
|
35
22
|
|
|
23
|
+
def parse_response(response)
|
|
24
|
+
json = JSON.parse(response, symbolize_names: true)
|
|
25
|
+
create_entity(
|
|
26
|
+
json, extract: {
|
|
27
|
+
zipcode: :cep,
|
|
28
|
+
street: :logradouro,
|
|
29
|
+
complement: :complemento,
|
|
30
|
+
neighborhood: :bairro,
|
|
31
|
+
city: :cidade,
|
|
32
|
+
state: (json[:estado_info][:nome]).to_s,
|
|
33
|
+
uf: :estado
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
end
|
|
36
37
|
end
|
|
37
38
|
end # Providers
|
|
38
39
|
end # CEP
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Business
|
|
2
4
|
module BR
|
|
3
5
|
class CEP
|
|
4
6
|
class Providers
|
|
5
7
|
class RepublicaVirtual < Base
|
|
6
|
-
|
|
7
|
-
|
|
8
8
|
def search_by(cep)
|
|
9
9
|
@zipcode = cep
|
|
10
10
|
response = RestClient.get "http://cep.republicavirtual.com.br/web_cep.php?cep=#{@zipcode}&formato=json"
|
|
@@ -12,21 +12,21 @@ module Business
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
private
|
|
15
|
-
def parse_response(response)
|
|
16
|
-
json = decode_json(response)
|
|
17
|
-
create_entity(
|
|
18
|
-
json, extract: {
|
|
19
|
-
zipcode: @zipcode,
|
|
20
|
-
street: "#{json[:tipo_logradouro]} #{json[:logradouro]}",
|
|
21
|
-
complement: "",
|
|
22
|
-
neighborhood: :bairro,
|
|
23
|
-
city: :cidade,
|
|
24
|
-
state: :uf,
|
|
25
|
-
uf: :uf
|
|
26
|
-
}
|
|
27
|
-
)
|
|
28
|
-
end
|
|
29
15
|
|
|
16
|
+
def parse_response(response)
|
|
17
|
+
json = decode_json(response)
|
|
18
|
+
create_entity(
|
|
19
|
+
json, extract: {
|
|
20
|
+
zipcode: @zipcode,
|
|
21
|
+
street: "#{json[:tipo_logradouro]} #{json[:logradouro]}",
|
|
22
|
+
complement: '',
|
|
23
|
+
neighborhood: :bairro,
|
|
24
|
+
city: :cidade,
|
|
25
|
+
state: :uf,
|
|
26
|
+
uf: :uf
|
|
27
|
+
}
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
30
|
end
|
|
31
31
|
end # Providers
|
|
32
32
|
end # CEP
|
data/lib/business-br/cnpj.rb
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Business::BR
|
|
2
4
|
class CNPJ
|
|
3
|
-
|
|
4
5
|
def validate(cnpj)
|
|
5
6
|
return false unless cnpj
|
|
6
7
|
return false unless cnpj.length == 14 || cnpj.length == 18
|
|
7
|
-
return false unless cnpj =~
|
|
8
|
+
return false unless cnpj =~ %r{^\d{2}\.?\d{3}\.?\d{3}/?\d{4}-?\d{2}$}
|
|
8
9
|
|
|
9
10
|
cnpj = normalize(cnpj)
|
|
10
|
-
numbers = [6,5,4,3,2,9,8,7,6,5,4,3,2]
|
|
11
|
+
numbers = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
|
|
11
12
|
|
|
12
13
|
first_num = 0
|
|
13
14
|
second_num = 0
|
|
14
15
|
|
|
15
16
|
12.times do |i|
|
|
16
|
-
first_num += numbers[i+1] * cnpj[i].to_i
|
|
17
|
+
first_num += numbers[i + 1] * cnpj[i].to_i
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
13.times do |i|
|
|
20
|
-
second_num +=
|
|
21
|
+
second_num += numbers[i] * cnpj[i].to_i
|
|
21
22
|
end
|
|
22
23
|
|
|
23
24
|
first_num %= 11
|
|
@@ -26,20 +27,21 @@ module Business::BR
|
|
|
26
27
|
second_num %= 11
|
|
27
28
|
second_num = second_num < 2 ? 0 : (11 - second_num) == 10 ? 1 : (11 - second_num)
|
|
28
29
|
|
|
29
|
-
return false unless "#{first_num}#{second_num}"
|
|
30
|
+
return false unless cnpj[12..13] == "#{first_num}#{second_num}"
|
|
30
31
|
|
|
31
32
|
true
|
|
32
33
|
end
|
|
33
34
|
|
|
34
|
-
|
|
35
35
|
def normalize(cnpj)
|
|
36
|
-
|
|
36
|
+
if cnpj =~ %r{^(\d{2})\.?(\d{3})\.?(\d{3})/?(\d{4})-?(\d{2})$}
|
|
37
|
+
"#{Regexp.last_match(1)}#{Regexp.last_match(2)}#{Regexp.last_match(3)}#{Regexp.last_match(4)}#{Regexp.last_match(5)}"
|
|
38
|
+
end
|
|
37
39
|
end
|
|
38
40
|
|
|
39
|
-
|
|
40
41
|
def format(cnpj)
|
|
41
|
-
|
|
42
|
+
if cnpj =~ %r{^(\d{2})\.?(\d{3})\.?(\d{3})/?(\d{4})-?(\d{2})$}
|
|
43
|
+
"#{Regexp.last_match(1)}.#{Regexp.last_match(2)}.#{Regexp.last_match(3)}/#{Regexp.last_match(4)}-#{Regexp.last_match(5)}"
|
|
44
|
+
end
|
|
42
45
|
end
|
|
43
|
-
|
|
44
46
|
end
|
|
45
47
|
end
|
data/lib/business-br/cpf.rb
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Business::BR
|
|
2
4
|
class CPF
|
|
3
|
-
|
|
4
5
|
@@black_list = %w[
|
|
5
|
-
00000000000
|
|
6
|
-
11111111111
|
|
7
|
-
22222222222
|
|
8
|
-
33333333333
|
|
9
|
-
44444444444
|
|
10
|
-
55555555555
|
|
11
|
-
66666666666
|
|
12
|
-
77777777777
|
|
13
|
-
88888888888
|
|
6
|
+
00000000000
|
|
7
|
+
11111111111
|
|
8
|
+
22222222222
|
|
9
|
+
33333333333
|
|
10
|
+
44444444444
|
|
11
|
+
55555555555
|
|
12
|
+
66666666666
|
|
13
|
+
77777777777
|
|
14
|
+
88888888888
|
|
14
15
|
99999999999
|
|
15
16
|
]
|
|
16
17
|
|
|
@@ -20,12 +21,12 @@ module Business::BR
|
|
|
20
21
|
return false unless cpf =~ /^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$/
|
|
21
22
|
|
|
22
23
|
cpf = normalize(cpf)
|
|
23
|
-
return false
|
|
24
|
+
return false if @@black_list.include? cpf
|
|
24
25
|
|
|
25
26
|
first_num = 0
|
|
26
27
|
second_num = 0
|
|
27
28
|
|
|
28
|
-
9.times do |i|
|
|
29
|
+
9.times do |i|
|
|
29
30
|
first_num += (10 - i) * cpf[i].to_i
|
|
30
31
|
end
|
|
31
32
|
|
|
@@ -39,20 +40,21 @@ module Business::BR
|
|
|
39
40
|
second_num = (second_num * 10) % 11
|
|
40
41
|
second_num = 0 if second_num == 10
|
|
41
42
|
|
|
42
|
-
return false unless "#{first_num}#{second_num}"
|
|
43
|
+
return false unless cpf[9..10] == "#{first_num}#{second_num}"
|
|
43
44
|
|
|
44
45
|
true
|
|
45
46
|
end
|
|
46
47
|
|
|
47
|
-
|
|
48
48
|
def normalize(cpf)
|
|
49
|
-
|
|
49
|
+
if cpf =~ /^(\d{3})\.?(\d{3})\.?(\d{3})-?(\d{2})$/
|
|
50
|
+
"#{Regexp.last_match(1)}#{Regexp.last_match(2)}#{Regexp.last_match(3)}#{Regexp.last_match(4)}"
|
|
51
|
+
end
|
|
50
52
|
end
|
|
51
53
|
|
|
52
|
-
|
|
53
54
|
def format(cpf)
|
|
54
|
-
|
|
55
|
+
if cpf =~ /^(\d{3})\.?(\d{3})\.?(\d{3})-?(\d{2})$/
|
|
56
|
+
"#{Regexp.last_match(1)}.#{Regexp.last_match(2)}.#{Regexp.last_match(3)}-#{Regexp.last_match(4)}"
|
|
57
|
+
end
|
|
55
58
|
end
|
|
56
|
-
|
|
57
59
|
end
|
|
58
60
|
end
|
data/lib/business-br/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,38 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: business-br
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.10.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Daniel Vinciguerra
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
|
-
cert_chain:
|
|
11
|
-
-
|
|
12
|
-
-----BEGIN CERTIFICATE-----
|
|
13
|
-
MIIDyDCCArCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBdMRswGQYDVQQDDBJkYW5p
|
|
14
|
-
ZWwudmluY2lndWVycmExFTATBgoJkiaJk/IsZAEZFgViaXZlZTETMBEGCgmSJomT
|
|
15
|
-
8ixkARkWA2NvbTESMBAGCgmSJomT8ixkARkWAmJyMB4XDTE2MTEyMzE4MzM1NloX
|
|
16
|
-
DTE3MTEyMzE4MzM1NlowXTEbMBkGA1UEAwwSZGFuaWVsLnZpbmNpZ3VlcnJhMRUw
|
|
17
|
-
EwYKCZImiZPyLGQBGRYFYml2ZWUxEzARBgoJkiaJk/IsZAEZFgNjb20xEjAQBgoJ
|
|
18
|
-
kiaJk/IsZAEZFgJicjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOMt
|
|
19
|
-
U5fmAykQFjl3S7tqIzMUeHkFT5jACDbYRTmo5lTVFapjKelf7xOrAfmEuPyywXIi
|
|
20
|
-
uePaImcfWxUF6zz0VOjcBcmvIzEo1T+w9u8J2Mq7uNyIL5Cbg1cRoh4dxknklowv
|
|
21
|
-
mGY/NPm4GD+Sm+gwmhXw7nDFQNhxBF1LtsZjv79Tc3gTAGyayN6sfCwtvp3gAluy
|
|
22
|
-
1+GRj9EyO5moR5nhagDx7e1P2GO7wwXsKjSD+Azzlk908lwdeasKvw+d/JFzGmxh
|
|
23
|
-
S5lyGEzc99bFwsn07rTh+x2lKBZnlGwdOKEA0zcX+blhGULcO7Q4p7QvHUtPFh02
|
|
24
|
-
kseIkpKdAX/iK+HTl+8CAwEAAaOBkjCBjzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
|
|
25
|
-
sDAdBgNVHQ4EFgQUDK0j20TQf2JavxEol3uqYPJd0VMwKgYDVR0RBCMwIYEfZGFu
|
|
26
|
-
aWVsLnZpbmNpZ3VlcnJhQGJpdmVlLmNvbS5icjAqBgNVHRIEIzAhgR9kYW5pZWwu
|
|
27
|
-
dmluY2lndWVycmFAYml2ZWUuY29tLmJyMA0GCSqGSIb3DQEBBQUAA4IBAQC5w9TB
|
|
28
|
-
hYsuhssatjtNdiUzfVTvYqiVVLxeD5kCLDO4OhSRw4Ib2aR6qncETgVJOak0tJ2y
|
|
29
|
-
v93JMpJVF8qWeC30IqCuAIoyFPdPXZWZPI489WUBg62qZEiQrIx1n3id2Ax20Yp6
|
|
30
|
-
yRdKomE9XulDDvKSTNyahW5a8uW020EQdFwUvJRJDnKyZmRvOXNgz4OTkcJLklhj
|
|
31
|
-
CmHhTfuGALBs6mmvBr1D+l4mA48E9HDV5jl0vKDnB4ewBefj/GsxcQND8B+W2DDU
|
|
32
|
-
diaADa2ZCuoGQuZU33vnJTmu7oy7ZUGOgo7qmoUAYbsn1x5la4sWQ6WHlH/UHDKJ
|
|
33
|
-
2N5QQXzs6+3RwTLN
|
|
34
|
-
-----END CERTIFICATE-----
|
|
35
|
-
date: 2017-01-19 00:00:00.000000000 Z
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2020-02-14 00:00:00.000000000 Z
|
|
36
12
|
dependencies:
|
|
37
13
|
- !ruby/object:Gem::Dependency
|
|
38
14
|
name: bundler
|
|
@@ -125,7 +101,6 @@ files:
|
|
|
125
101
|
- README.md
|
|
126
102
|
- Rakefile
|
|
127
103
|
- business-br.gemspec
|
|
128
|
-
- certs/dvinciguerra.pem
|
|
129
104
|
- examples/cep.rb
|
|
130
105
|
- lib/business-br.rb
|
|
131
106
|
- lib/business-br/cep.rb
|
|
@@ -156,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
156
131
|
version: '0'
|
|
157
132
|
requirements: []
|
|
158
133
|
rubyforge_project:
|
|
159
|
-
rubygems_version: 2.
|
|
134
|
+
rubygems_version: 2.7.6
|
|
160
135
|
signing_key:
|
|
161
136
|
specification_version: 4
|
|
162
137
|
summary: This project provide classes for validations and conversions to use in brazilian
|
checksums.yaml.gz.sig
DELETED
data.tar.gz.sig
DELETED
|
Binary file
|
data/certs/dvinciguerra.pem
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
MIIDyDCCArCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBdMRswGQYDVQQDDBJkYW5p
|
|
3
|
-
ZWwudmluY2lndWVycmExFTATBgoJkiaJk/IsZAEZFgViaXZlZTETMBEGCgmSJomT
|
|
4
|
-
8ixkARkWA2NvbTESMBAGCgmSJomT8ixkARkWAmJyMB4XDTE2MTEyMzE4MzM1NloX
|
|
5
|
-
DTE3MTEyMzE4MzM1NlowXTEbMBkGA1UEAwwSZGFuaWVsLnZpbmNpZ3VlcnJhMRUw
|
|
6
|
-
EwYKCZImiZPyLGQBGRYFYml2ZWUxEzARBgoJkiaJk/IsZAEZFgNjb20xEjAQBgoJ
|
|
7
|
-
kiaJk/IsZAEZFgJicjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOMt
|
|
8
|
-
U5fmAykQFjl3S7tqIzMUeHkFT5jACDbYRTmo5lTVFapjKelf7xOrAfmEuPyywXIi
|
|
9
|
-
uePaImcfWxUF6zz0VOjcBcmvIzEo1T+w9u8J2Mq7uNyIL5Cbg1cRoh4dxknklowv
|
|
10
|
-
mGY/NPm4GD+Sm+gwmhXw7nDFQNhxBF1LtsZjv79Tc3gTAGyayN6sfCwtvp3gAluy
|
|
11
|
-
1+GRj9EyO5moR5nhagDx7e1P2GO7wwXsKjSD+Azzlk908lwdeasKvw+d/JFzGmxh
|
|
12
|
-
S5lyGEzc99bFwsn07rTh+x2lKBZnlGwdOKEA0zcX+blhGULcO7Q4p7QvHUtPFh02
|
|
13
|
-
kseIkpKdAX/iK+HTl+8CAwEAAaOBkjCBjzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
|
|
14
|
-
sDAdBgNVHQ4EFgQUDK0j20TQf2JavxEol3uqYPJd0VMwKgYDVR0RBCMwIYEfZGFu
|
|
15
|
-
aWVsLnZpbmNpZ3VlcnJhQGJpdmVlLmNvbS5icjAqBgNVHRIEIzAhgR9kYW5pZWwu
|
|
16
|
-
dmluY2lndWVycmFAYml2ZWUuY29tLmJyMA0GCSqGSIb3DQEBBQUAA4IBAQC5w9TB
|
|
17
|
-
hYsuhssatjtNdiUzfVTvYqiVVLxeD5kCLDO4OhSRw4Ib2aR6qncETgVJOak0tJ2y
|
|
18
|
-
v93JMpJVF8qWeC30IqCuAIoyFPdPXZWZPI489WUBg62qZEiQrIx1n3id2Ax20Yp6
|
|
19
|
-
yRdKomE9XulDDvKSTNyahW5a8uW020EQdFwUvJRJDnKyZmRvOXNgz4OTkcJLklhj
|
|
20
|
-
CmHhTfuGALBs6mmvBr1D+l4mA48E9HDV5jl0vKDnB4ewBefj/GsxcQND8B+W2DDU
|
|
21
|
-
diaADa2ZCuoGQuZU33vnJTmu7oy7ZUGOgo7qmoUAYbsn1x5la4sWQ6WHlH/UHDKJ
|
|
22
|
-
2N5QQXzs6+3RwTLN
|
|
23
|
-
-----END CERTIFICATE-----
|
metadata.gz.sig
DELETED