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 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,7 @@
1
+ require "rake/testtask"
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.libs << "lib"
5
+ t.test_files = Dir["test/**/*_test.rb"]
6
+ p t
7
+ end
@@ -0,0 +1,7 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "check_cpf_cnpj"
3
+ s.version = "0.1.2"
4
+ s.summary = "Simple gem to validate CPF and CNPJ"
5
+ s.author = "Thiago Varanda"
6
+ s.files = Dir["{lib/**/*.rb,README.rdoc,test/**/*.rb,Rakefile,*.gemspec}"]
7
+ end
@@ -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: []