validator-nric 0.0.2 → 0.0.4
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/.rubocop.yml +3 -0
- data/lib/validator/nric/version.rb +1 -1
- data/lib/validator/nric.rb +10 -8
- data/spec/spec_helper.rb +0 -1
- data/spec/validator/nric_spec.rb +7 -2
- data/validator-nric.gemspec +3 -3
- metadata +12 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cec0caa9bd7fb0e495c18a1fea4ebb1632f694af52a2e5a442b42f790ba170aa
|
4
|
+
data.tar.gz: 5b9b3a5c5fda09703e61daad09ae1c0abbe683fd5ce66b02cda40f6d7fee210d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a520bd88808ecb03e86db1412280d8b54e37449d12cc2530bad900df3f1dfa95f322d995d62367152af457aeacb958765cfe1c0e275d411d1001fb9f45c23f9f
|
7
|
+
data.tar.gz: 7fcc78da566007b736b2c182f9e3b22d6b725f1f5001c76f9ba3dad32d690d51becdd5f6c9ecd4dc20ebadf785ec0dfcf2b56e0b040fa876d15cd2dd7c5f2f9f
|
data/.rubocop.yml
CHANGED
data/lib/validator/nric.rb
CHANGED
@@ -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
|
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
data/spec/validator/nric_spec.rb
CHANGED
@@ -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
|
data/validator-nric.gemspec
CHANGED
@@ -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', '~>
|
22
|
-
spec.add_development_dependency 'rake', '~>
|
23
|
-
spec.add_development_dependency 'rspec', '~> 3
|
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.
|
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:
|
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: '
|
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: '
|
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: '
|
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: '
|
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
|
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
|
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
|
-
|
109
|
-
|
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:
|