check_cpf_cnpj 0.1.2
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 +7 -0
- data/Rakefile +7 -0
- data/check_cpf_cnpj.gemspec +7 -0
- data/lib/check_cpf_cnpj.rb +22 -0
- data/lib/cpf/cpf.rb +33 -0
- data/test/check_cpf_cnpj_test.rb +37 -0
- metadata +47 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: d453ddf9debfc3ce1dfc4bbbd1077926f6f1fbbe
|
|
4
|
+
data.tar.gz: f59b4e001812d563bbcec64ac8eb1f2d7655aa62
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: f839c93160e8d750660213812d0ce7e87d6f25b4c31e54e8276801b34c90517674d82ce309b4a700444439fca95153cb1887ec548517733c4a28c2c2a242712d
|
|
7
|
+
data.tar.gz: ee723bd30608d0117420aa822bc2c4ec361960598f196f27a485bf78eea9bef59bd726172d66f1aa37809e08c5f6572eaf6242ac8aad2815fe808f9493cdef46
|
data/Rakefile
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module CheckCpfCnpj
|
|
2
|
+
|
|
3
|
+
require 'cpf/cpf'
|
|
4
|
+
|
|
5
|
+
def self.valid_cpf?(number)
|
|
6
|
+
return false if number.size != 11
|
|
7
|
+
Cpf.new(number).valid?
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.formatted_cpf(number)
|
|
11
|
+
return false if number.size != 11
|
|
12
|
+
Cpf.new(number).formatted
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.only_cpf_numbers(number)
|
|
16
|
+
Cpf.new(number).only_numbers
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
CheckCpfCnpj.valid_cpf?('93463833808')
|
data/lib/cpf/cpf.rb
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
class Cpf
|
|
2
|
+
|
|
3
|
+
def initialize(number)
|
|
4
|
+
return false if number.nil?
|
|
5
|
+
@number = number.to_s
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def only_numbers
|
|
9
|
+
return @number.gsub(".", "").gsub("-", "")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def formatted
|
|
13
|
+
return @number.insert(3, '.').insert(7, '.').insert(11, '-')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def valid?
|
|
17
|
+
return false if @number[9].to_i != check_digits(@number[0..8].split(""))
|
|
18
|
+
return false if @number[10].to_i != check_digits(@number[0..9].split(""))
|
|
19
|
+
return true
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def check_digits(digits)
|
|
23
|
+
prod = digits.size + 1
|
|
24
|
+
sum = 0
|
|
25
|
+
digits.each do |digit|
|
|
26
|
+
sum += digit.to_i * prod
|
|
27
|
+
prod -= 1
|
|
28
|
+
end
|
|
29
|
+
mod = sum%11
|
|
30
|
+
if mod < 2 then 0 else 11-mod end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'minitest/autorun'
|
|
2
|
+
require 'check_cpf_cnpj'
|
|
3
|
+
|
|
4
|
+
class CheckCpfCnpjTest < MiniTest::Unit::TestCase
|
|
5
|
+
def test_valid_formatted_cpf
|
|
6
|
+
assert_equal "934.638.338-08", CheckCpfCnpj.formatted_cpf('93463833808')
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_invalid_formatted_cpf
|
|
10
|
+
refute CheckCpfCnpj.formatted_cpf('9346383380') # 10 digits
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_only_cpf_numbers
|
|
14
|
+
assert_equal "93463833808", CheckCpfCnpj.only_cpf_numbers('934.638.338-08')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_valid_cpf
|
|
18
|
+
assert CheckCpfCnpj.valid_cpf?('93463833808')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_invalid_cpf
|
|
22
|
+
refute CheckCpfCnpj.valid_cpf?('93363833808')
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_invalid_fist_digit
|
|
26
|
+
refute CheckCpfCnpj.valid_cpf?('93463833818')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_invalid_second_digit
|
|
30
|
+
refute CheckCpfCnpj.valid_cpf?('93463833809')
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_invalid_digits
|
|
34
|
+
refute CheckCpfCnpj.valid_cpf?('93463833811')
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: check_cpf_cnpj
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.2
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Thiago Varanda
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2016-08-03 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
13
|
+
description:
|
|
14
|
+
email:
|
|
15
|
+
executables: []
|
|
16
|
+
extensions: []
|
|
17
|
+
extra_rdoc_files: []
|
|
18
|
+
files:
|
|
19
|
+
- Rakefile
|
|
20
|
+
- check_cpf_cnpj.gemspec
|
|
21
|
+
- lib/check_cpf_cnpj.rb
|
|
22
|
+
- lib/cpf/cpf.rb
|
|
23
|
+
- test/check_cpf_cnpj_test.rb
|
|
24
|
+
homepage:
|
|
25
|
+
licenses: []
|
|
26
|
+
metadata: {}
|
|
27
|
+
post_install_message:
|
|
28
|
+
rdoc_options: []
|
|
29
|
+
require_paths:
|
|
30
|
+
- lib
|
|
31
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
32
|
+
requirements:
|
|
33
|
+
- - ">="
|
|
34
|
+
- !ruby/object:Gem::Version
|
|
35
|
+
version: '0'
|
|
36
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
requirements: []
|
|
42
|
+
rubyforge_project:
|
|
43
|
+
rubygems_version: 2.6.6
|
|
44
|
+
signing_key:
|
|
45
|
+
specification_version: 4
|
|
46
|
+
summary: Simple gem to validate CPF and CNPJ
|
|
47
|
+
test_files: []
|