sa_vat_validation 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 7ee5f5cb79a55957c35c87dbfe44c36eb2cd359a
4
- data.tar.gz: 1e866c4dd9ac2c417bf5a6b9b6bcdf8ca86f5ede
2
+ SHA256:
3
+ metadata.gz: 42162cd0d649690602314d4c7936eacbacc0adfa1d0332fbc47f10bf848d40ee
4
+ data.tar.gz: 2f27791b1489bd91c45f1b578976b80b824b7e77ab8d7b1b6f64961a682ca4c5
5
5
  SHA512:
6
- metadata.gz: a9456795c2c75c7704054b1d4331ac53fddacf9817c02e7430693ade0d2b507f92197382d425afbe976dacfa424c7df3a4197b1885401ecb1646b7fc286f0028
7
- data.tar.gz: 34954fdd1846fbee916e93d591b8861424a9f214dbdff258adefd89488c7fb8d730d40f83bd37fed899823e4c84f8a03df1838fd0b978a0b33de3875b995d20b
6
+ metadata.gz: 9088b0d2f574a246ccddc2c996ad2d147f1cbede353ee7b60e6ca94ce664409e578e01d0140080efb56d3913890fb4d0b0365fb7509d60a97a3a3fc8c990bb17
7
+ data.tar.gz: 34c02e321c98e548791f7aa87479be4ae42d91b9b38465bf64dbd48161cc4beede0b93b7141c73e4dc11f4ac1d22d4c015cfe0cae65aa68b482f36f162ef6de4
data/.gitignore CHANGED
@@ -3,4 +3,3 @@
3
3
  pkg/*
4
4
  test/*
5
5
  bin/*
6
- *.gemspec
data/Gemfile.lock CHANGED
@@ -1,21 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sa_vat_validation (0.1.2)
4
+ sa_vat_validation (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- activesupport (4.2.1)
10
- i18n (~> 0.7)
11
- json (~> 1.7, >= 1.7.7)
12
- minitest (~> 5.1)
13
- thread_safe (~> 0.3, >= 0.3.4)
14
- tzinfo (~> 1.1)
9
+ coderay (1.1.3)
15
10
  diff-lcs (1.2.5)
16
- i18n (0.7.0)
17
- json (1.8.2)
18
- minitest (5.7.0)
11
+ method_source (1.0.0)
12
+ pry (0.14.1)
13
+ coderay (~> 1.1)
14
+ method_source (~> 1.0)
19
15
  rake (10.4.2)
20
16
  rspec (3.2.0)
21
17
  rspec-core (~> 3.2.0)
@@ -30,19 +26,16 @@ GEM
30
26
  diff-lcs (>= 1.2.0, < 2.0)
31
27
  rspec-support (~> 3.2.0)
32
28
  rspec-support (3.2.2)
33
- thread_safe (0.3.5)
34
- tzinfo (1.2.2)
35
- thread_safe (~> 0.1)
36
29
 
37
30
  PLATFORMS
38
31
  ruby
39
32
 
40
33
  DEPENDENCIES
41
- activesupport (~> 4.2)
42
34
  bundler (~> 1.10)
35
+ pry (~> 0.14.1)
43
36
  rake (~> 10.0)
44
37
  rspec (~> 3.2)
45
38
  sa_vat_validation!
46
39
 
47
40
  BUNDLED WITH
48
- 1.10.1
41
+ 1.16.2
@@ -1,3 +1,3 @@
1
1
  module SaVatValidation
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0".freeze
3
3
  end
@@ -1,21 +1,5 @@
1
1
  require "sa_vat_validation/version"
2
- require 'active_support/core_ext/string'
3
2
 
4
- class Fixnum
5
- def last_digit
6
- self.to_s.last.to_i
7
- end
8
-
9
- def first_digit
10
- self.to_s.first.to_i
11
- end
12
- end
13
-
14
- class String
15
- def is_numeric?
16
- Float self rescue false
17
- end
18
- end
19
3
 
20
4
  module SaVatValidation
21
5
  def self.valid?(vat_number)
@@ -23,34 +7,48 @@ module SaVatValidation
23
7
 
24
8
  # As per SARS
25
9
  # A VAT Number is a unique number, which comprises of 10 digits and starts with the number 4
26
- return false unless digits.first.to_i == 4
27
- return false unless digits.size == 10 && vat_number.to_s.is_numeric?
10
+ return false unless digits.first == 4
11
+ return false unless digits.size == 10 && vat_number.to_s.is_numeric?
28
12
 
29
13
  check_digit = digits.pop
14
+ sum = 0
30
15
 
31
- sum = 0
32
16
  digits.each_with_index do |digit, i|
33
17
  if i.even?
34
18
  result = digit * 2
35
- if result >= 10
36
- result = result.first_digit + result.last_digit
37
- end
19
+ result = first_digit(result) + last_digit(result) if result >= 10
20
+
38
21
  sum += result
39
22
  else
40
- sum += digit.to_i
23
+ sum += digit
41
24
  end
42
25
  end
43
- if sum.last_digit.zero?
44
- calculated_digit = sum.last_digit
45
- else
46
- calculated_digit = 10 - sum.last_digit
47
- end
48
26
 
49
- return check_digit == calculated_digit
27
+ calculated_digit = last_digit(sum).zero? ? last_digit(sum) : 10 - last_digit(sum)
28
+
29
+ check_digit == calculated_digit
30
+ end
31
+
32
+ def self.last_digit(a)
33
+ a.to_s.chars.last.to_i
34
+ end
35
+
36
+ def self.first_digit(a)
37
+ a.to_s.chars.first.to_i
38
+ end
39
+ end
40
+
41
+ class String
42
+ def valid_sa_vat_number?
43
+ SaVatValidation::valid?(self)
44
+ end
45
+
46
+ def is_numeric?
47
+ Float self rescue false
50
48
  end
51
49
  end
52
50
 
53
- class Object
51
+ class Numeric
54
52
  def valid_sa_vat_number?
55
53
  SaVatValidation::valid?(self)
56
54
  end
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'sa_vat_validation/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "sa_vat_validation"
9
+ spec.version = SaVatValidation::VERSION
10
+ spec.authors = ["Gary Greyling"]
11
+ spec.email = ["greyling.gary@gmail.com"]
12
+ spec.description = "SA VAT number validation"
13
+ spec.summary = "SA VAT number validation"
14
+ spec.homepage = ""
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files`.split($/)
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ["lib"]
21
+
22
+ # spec.add_development_dependency "activesupport", "~> 4.2"
23
+ spec.add_development_dependency "bundler", "~> 1.10"
24
+ spec.add_development_dependency "pry", "~> 0.14.1"
25
+ spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "rspec", "~> 3.2"
27
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe SaVatValidation do
4
+ it 'has a version number' do
5
+ expect(SaVatValidation::VERSION).not_to be nil
6
+ end
7
+
8
+ context 'validates a South African VAT number' do
9
+ it "should validate '4111111110' as true" do
10
+ expect(described_class).to be_valid(4111111110)
11
+ end
12
+
13
+ it "should validate '0000000000' as false" do
14
+ expect(described_class).not_to be_valid(0000000000)
15
+ end
16
+
17
+ it "should validate a non number 'kjabndfojb' as false" do
18
+ expect(described_class).not_to be_valid("kjabndfojb")
19
+ end
20
+ end
21
+
22
+ context "monkey patching" do
23
+ describe "String" do
24
+ context "when valid" do
25
+ subject { "4111111110" }
26
+
27
+ it { is_expected.to be_valid_sa_vat_number }
28
+ end
29
+
30
+ context "when invalid" do
31
+ subject { "0000000000" }
32
+
33
+ it { is_expected.not_to be_valid_sa_vat_number }
34
+ end
35
+ end
36
+
37
+ describe "Numeric" do
38
+ context "when valid" do
39
+ subject { 4111111110 }
40
+
41
+ it { is_expected.to be_valid_sa_vat_number }
42
+ end
43
+
44
+ context "when invalid" do
45
+ subject { 0000000000 }
46
+
47
+ it { is_expected.not_to be_valid_sa_vat_number }
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,4 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+
3
+ require 'sa_vat_validation'
4
+ require 'pry'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sa_vat_validation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gary Greyling
8
- autorequire:
9
- bindir: exe
8
+ autorequire:
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-08 00:00:00.000000000 Z
11
+ date: 2022-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,51 +25,50 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.10'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: 0.14.1
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: 0.14.1
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.2'
47
+ version: '10.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.2'
54
+ version: '10.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: activesupport
56
+ name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '4.2'
61
+ version: '3.2'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '4.2'
69
- description: This gem is used to validate a South African VAT number based on the
70
- current rules and regulations
68
+ version: '3.2'
69
+ description: SA VAT number validation
71
70
  email:
72
- - greyling.gary@gmail.co.za
71
+ - greyling.gary@gmail.com
73
72
  executables: []
74
73
  extensions: []
75
74
  extra_rdoc_files: []
@@ -84,11 +83,14 @@ files:
84
83
  - Rakefile
85
84
  - lib/sa_vat_validation.rb
86
85
  - lib/sa_vat_validation/version.rb
87
- homepage: http://github.com/mpowered/sa_vat_validation
86
+ - sa_vat_validation.gemspec
87
+ - spec/sa_vat_validation_spec.rb
88
+ - spec/spec_helper.rb
89
+ homepage: ''
88
90
  licenses:
89
91
  - MIT
90
92
  metadata: {}
91
- post_install_message:
93
+ post_install_message:
92
94
  rdoc_options: []
93
95
  require_paths:
94
96
  - lib
@@ -103,9 +105,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
105
  - !ruby/object:Gem::Version
104
106
  version: '0'
105
107
  requirements: []
106
- rubyforge_project:
107
- rubygems_version: 2.2.2
108
- signing_key:
108
+ rubygems_version: 3.1.2
109
+ signing_key:
109
110
  specification_version: 4
110
- summary: Validation of South African VAT numbers
111
- test_files: []
111
+ summary: SA VAT number validation
112
+ test_files:
113
+ - spec/sa_vat_validation_spec.rb
114
+ - spec/spec_helper.rb