validator-nric 0.0.2 → 0.0.4

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: f3d2261299c9420bd15c70344beee9816fcfa6a2
4
- data.tar.gz: 4de48ec5f800036bb0b03d789e4f6db96903a31c
2
+ SHA256:
3
+ metadata.gz: cec0caa9bd7fb0e495c18a1fea4ebb1632f694af52a2e5a442b42f790ba170aa
4
+ data.tar.gz: 5b9b3a5c5fda09703e61daad09ae1c0abbe683fd5ce66b02cda40f6d7fee210d
5
5
  SHA512:
6
- metadata.gz: 8f1b4f96be687f9257aa076b12c334af8a67fb992b356bd09092ad47bd8c669099aa6697522ac00ab3d063dce25857fd9fc3e890e052e03e1f098063b87dd95d
7
- data.tar.gz: 594a8c6e2a3b833ac89f3e74313fec00161dedc258b9ac4ba29282e751a5a4825b91d7fbdc65dc94b8f868b74c5e4606aa882368c1910ca6a94360fe2854a7db
6
+ metadata.gz: a520bd88808ecb03e86db1412280d8b54e37449d12cc2530bad900df3f1dfa95f322d995d62367152af457aeacb958765cfe1c0e275d411d1001fb9f45c23f9f
7
+ data.tar.gz: 7fcc78da566007b736b2c182f9e3b22d6b725f1f5001c76f9ba3dad32d690d51becdd5f6c9ecd4dc20ebadf785ec0dfcf2b56e0b040fa876d15cd2dd7c5f2f9f
data/.rubocop.yml CHANGED
@@ -5,3 +5,6 @@ AllCops:
5
5
 
6
6
  Documentation:
7
7
  Enabled: false
8
+
9
+ Metrics/BlockLength:
10
+ Max: 50
@@ -1,5 +1,5 @@
1
1
  module Validator
2
2
  module Nric
3
- VERSION = '0.0.2'
3
+ VERSION = '0.0.4'.freeze
4
4
  end
5
5
  end
@@ -12,21 +12,23 @@ module Validator
12
12
  module_function
13
13
 
14
14
  # The multiplier for each individual digit
15
- WEIGHT = [2, 7, 6, 5, 4, 3, 2]
15
+ WEIGHT = [2, 7, 6, 5, 4, 3, 2].freeze
16
16
 
17
17
  # Century prefix lookup tables
18
18
  #
19
19
  # S - Born before 2000. S is the 19th alphabet denoting (1900 - 1999)
20
20
  # T - Born in 2000 and beyong. (2000 - 2099??)
21
21
  # F - Foreigners with pass issued before 2000
22
- # G - Foreigners with pass issued after 2000
22
+ # G - Foreigners with pass issued between 2000 and 2022
23
+ # M - Foreigners with pass issued after 2022
23
24
  #
24
25
  # Notice the it is backward of ABCDEFGHIZJ
25
26
  # For T and G, there is a shift of 4 places
26
- S_TABLE = %w(J Z I H G F E D C B A)
27
- T_TABLE = %w(G F E D C B A J Z I H)
28
- F_TABLE = %w(X W U T R Q P N M L K)
29
- G_TABLE = %w(R Q P N M L K X W U T)
27
+ S_TABLE = %w(J Z I H G F E D C B A).freeze
28
+ T_TABLE = %w(G F E D C B A J Z I H).freeze
29
+ F_TABLE = %w(X W U T R Q P N M L K).freeze
30
+ G_TABLE = %w(R Q P N M L K X W U T).freeze
31
+ M_TABLE = %w(T R Q P N J L K X W U).freeze
30
32
 
31
33
  def mod(value)
32
34
  ic_array = value.each_char.map(&:to_i)
@@ -39,8 +41,8 @@ module Validator
39
41
 
40
42
  def check(nric)
41
43
  return false if nric.nil? || nric.size != 9
42
- nric.upcase!
43
- return false unless %w(S T F G).include?(nric[0])
44
+ nric = nric.upcase
45
+ return false unless %w(S T F G M).include?(nric[0])
44
46
 
45
47
  century_prefix = nric[0, 1]
46
48
  ic_number = nric[1, 7]
data/spec/spec_helper.rb CHANGED
@@ -87,5 +87,4 @@ RSpec.configure do |config|
87
87
  # test failures related to randomization by passing the same `--seed` value
88
88
  # as the one that triggered the failure.
89
89
  Kernel.srand config.seed
90
-
91
90
  end
@@ -1,5 +1,4 @@
1
1
  RSpec.describe Validator::Nric do
2
-
3
2
  describe 'check' do
4
3
  it 'returns false if nric is nil' do
5
4
  expect(subject.check(nil)).to be false
@@ -13,6 +12,13 @@ RSpec.describe Validator::Nric do
13
12
  expect(subject.check('111111111')).to be false
14
13
  expect(subject.check('XXXXXXXXX')).to be false
15
14
  end
15
+
16
+ it 'validates M series' do # taken from https://samliew.com/nric-generator
17
+ %w(M1987714T M1818317R M1090782Q M1803902P M1530517N M6193641J
18
+ M5140500L M7357583K M8721122X M1081075W M1954378U).each do |value|
19
+ expect(subject.check(value)).to be true
20
+ end
21
+ end
16
22
  end
17
23
 
18
24
  describe 'mod' do
@@ -40,5 +46,4 @@ RSpec.describe Validator::Nric do
40
46
  expect(subject.lookup('S', 10)).to eq 'A'
41
47
  end
42
48
  end
43
-
44
49
  end
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency 'bundler', '~> 1.7'
22
- spec.add_development_dependency 'rake', '~> 10.0'
23
- spec.add_development_dependency 'rspec', '~> 3.1'
21
+ spec.add_development_dependency 'bundler', '~> 2'
22
+ spec.add_development_dependency 'rake', '~> 13'
23
+ spec.add_development_dependency 'rspec', '~> 3'
24
24
  spec.add_development_dependency 'rubocop'
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validator-nric
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - mech
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-11 00:00:00.000000000 Z
11
+ date: 2023-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '2'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13'
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: '13'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.1'
47
+ version: '3'
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.1'
54
+ version: '3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -90,7 +90,7 @@ homepage: https://github.com/mech/validator-nric
90
90
  licenses:
91
91
  - MIT
92
92
  metadata: {}
93
- post_install_message:
93
+ post_install_message:
94
94
  rdoc_options: []
95
95
  require_paths:
96
96
  - lib
@@ -105,12 +105,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
105
  - !ruby/object:Gem::Version
106
106
  version: '0'
107
107
  requirements: []
108
- rubyforge_project:
109
- rubygems_version: 2.4.2
110
- signing_key:
108
+ rubygems_version: 3.3.18
109
+ signing_key:
111
110
  specification_version: 4
112
111
  summary: Validates Singapore NRIC
113
112
  test_files:
114
113
  - spec/spec_helper.rb
115
114
  - spec/validator/nric_spec.rb
116
- has_rdoc: