resident 0.0.10 → 0.0.11
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f353c0782a96c1d79d67c61cb7d29d7508ad45bb
|
4
|
+
data.tar.gz: adfc48cdb9ca18ab426aff09572f8d5a1d4903cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87117786abbf0a70b38ec3a654fcf133fae1fbdac1c3e8c1b3b957bf037a8abec7b049225627d6d6233f0dcbe91ad6802b7c42eb225b492322a9030f0dcaedce
|
7
|
+
data.tar.gz: 11458275db57866d20915a61cf480ca50ec7b3922f787f5bc2dd2cfe0bf70857dabd253b87500af7d13796e95393dabcaa4a6f20c7e7d37a6bef2cf66d65d2b3
|
data/README.md
CHANGED
@@ -12,15 +12,16 @@ There is a special focus on identifying these numbers robustly (i.e. you can saf
|
|
12
12
|
|
13
13
|
## Usage
|
14
14
|
|
15
|
-
Really, you can just use <tt>valid?</tt>, <tt>to_s</tt>, and <tt>age</tt> like so:
|
15
|
+
Really, you can just use <tt>valid?</tt>, <tt>sanitize</tt>, <tt>to_s</tt>, and <tt>age</tt> like so:
|
16
16
|
|
17
17
|
require 'resident'
|
18
18
|
|
19
19
|
number = NationalIdentificationNumber::Swedish.new('0501261853')
|
20
20
|
|
21
|
-
number.valid?
|
22
|
-
number.to_s
|
23
|
-
number.
|
21
|
+
number.valid? #=> true
|
22
|
+
number.to_s #=> "050126-1853"
|
23
|
+
number.sanitize #=> "050126-1853" (Would have been nil if invalid)
|
24
|
+
number.age #=> 9
|
24
25
|
|
25
26
|
Please have a look at the specs to see how the national identification numbers of various countries are handled.
|
26
27
|
|
@@ -55,4 +56,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
55
56
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
56
57
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
57
58
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
58
|
-
THE SOFTWARE.
|
59
|
+
THE SOFTWARE.
|
@@ -4,7 +4,6 @@ module NationalIdentificationNumber
|
|
4
4
|
# Inspired by https://github.com/c7/personnummer/blob/master/lib/personnummer.rb
|
5
5
|
# Copyright (c) 2008 Peter Hellberg MIT
|
6
6
|
class Swedish < Base
|
7
|
-
|
8
7
|
attr_reader :date # used for testing
|
9
8
|
|
10
9
|
# Generator for valid Swedish personnummer: http://en.wikipedia.org/wiki/Personal_identity_number_(Sweden)
|
@@ -31,7 +30,12 @@ module NationalIdentificationNumber
|
|
31
30
|
if @number.match(/\A(\d{0}|\d{2})(\d{6})(\-{0,1})(\d{4})\Z/)
|
32
31
|
@number = "#{$2}-#{$4}"
|
33
32
|
else
|
34
|
-
@number.gsub
|
33
|
+
candidate = @number.gsub(/[^\d\-\+]/, '')
|
34
|
+
if candidate.match(/\A(\d{0}|\d{2})(\d{6})(\-{0,1})(\d{4})\Z/)
|
35
|
+
@number = "#{$2}-#{$4}"
|
36
|
+
else
|
37
|
+
@number = candidate
|
38
|
+
end
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
@@ -98,15 +102,14 @@ module NationalIdentificationNumber
|
|
98
102
|
end
|
99
103
|
control_digit
|
100
104
|
end
|
101
|
-
|
102
105
|
end
|
103
106
|
end
|
104
107
|
|
105
|
-
if $0 == __FILE__
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
end
|
108
|
+
# if $0 == __FILE__
|
109
|
+
# # Randomize every part
|
110
|
+
# puts Bukowskis::NationalIdentificationNumber::Swedish.generate
|
111
|
+
# # Use given date, randomize serial
|
112
|
+
# puts Bukowskis::NationalIdentificationNumber::Swedish.generate(Date.new(1975,1,1))
|
113
|
+
# # Use given date and serial, calculate checksum
|
114
|
+
# puts Bukowskis::NationalIdentificationNumber::Swedish.generate(Date.new(1975,1,1), 123)
|
115
|
+
# end
|
@@ -5,7 +5,6 @@ include NationalIdentificationNumber
|
|
5
5
|
|
6
6
|
describe Finnish do
|
7
7
|
describe '#valid?' do
|
8
|
-
|
9
8
|
it "recognizes valid numbers" do
|
10
9
|
expect( Finnish.new('311280-999J') ).to be_valid
|
11
10
|
expect( Finnish.new('131052-308T') ).to be_valid
|
@@ -32,7 +31,39 @@ describe Finnish do
|
|
32
31
|
expect( Finnish.new(1234567890) ).to_not be_valid
|
33
32
|
expect( Finnish.new(:really_bad_input_value) ).to_not be_valid
|
34
33
|
end
|
34
|
+
end
|
35
35
|
|
36
|
+
describe 'sanitize' do
|
37
|
+
context 'valid numbers' do
|
38
|
+
it 'is the formatted number' do
|
39
|
+
expect(Finnish.new('311280-999J').sanitize).to eq '311280-999J'
|
40
|
+
expect(Finnish.new('131052-308T').sanitize).to eq '131052-308T'
|
41
|
+
expect(Finnish.new('290164-862u').sanitize).to eq '290164-862U'
|
42
|
+
expect(Finnish.new('270368A172X').sanitize).to eq '270368A172X'
|
43
|
+
expect(Finnish.new('310145A586a').sanitize).to eq '310145A586A'
|
44
|
+
expect(Finnish.new('080266+183P').sanitize).to eq '080266+183P'
|
45
|
+
expect(Finnish.new('290248+145c').sanitize).to eq '290248+145C'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'invalid numbers' do
|
50
|
+
it 'is nil' do
|
51
|
+
expect(Finnish.new('671301A172V').sanitize).to be nil
|
52
|
+
expect(Finnish.new('830231A172M').sanitize).to be nil
|
53
|
+
expect(Finnish.new('311180-999J').sanitize).to be nil
|
54
|
+
expect(Finnish.new('131052-308S').sanitize).to be nil
|
55
|
+
expect(Finnish.new('290164X862U').sanitize).to be nil
|
56
|
+
expect(Finnish.new('670368A172X').sanitize).to be nil
|
57
|
+
expect(Finnish.new('310145--586A').sanitize).to be nil
|
58
|
+
expect(Finnish.new('asdf').sanitize).to be nil
|
59
|
+
expect(Finnish.new('1234567890').sanitize).to be nil
|
60
|
+
expect(Finnish.new('0000000000000').sanitize).to be nil
|
61
|
+
expect(Finnish.new('000000-0000').sanitize).to be nil
|
62
|
+
expect(Finnish.new('').sanitize).to be nil
|
63
|
+
expect(Finnish.new(1234567890).sanitize).to be nil
|
64
|
+
expect(Finnish.new(:really_bad_input_value).sanitize).to be nil
|
65
|
+
end
|
66
|
+
end
|
36
67
|
end
|
37
68
|
|
38
69
|
describe 'age' do
|
@@ -94,4 +125,4 @@ describe Finnish do
|
|
94
125
|
end
|
95
126
|
|
96
127
|
end
|
97
|
-
end
|
128
|
+
end
|
@@ -41,6 +41,40 @@ describe Swedish, '.generate' do
|
|
41
41
|
|
42
42
|
end
|
43
43
|
|
44
|
+
describe 'sanitize' do
|
45
|
+
context 'invalid numbers' do
|
46
|
+
it 'is nil' do
|
47
|
+
expect(Swedish.new('991301-1236').sanitize).to be nil # valid checksum, invalid month
|
48
|
+
expect(Swedish.new('830231-5554').sanitize).to be nil # valid checksum, invalid day
|
49
|
+
expect(Swedish.new('050112--2451').sanitize).to be nil
|
50
|
+
expect(Swedish.new('123456-1239').sanitize).to be nil
|
51
|
+
expect(Swedish.new('180123-2668').sanitize).to be nil
|
52
|
+
expect(Swedish.new('150D1261853').sanitize).to be nil
|
53
|
+
expect(Swedish.new('750112-2451').sanitize).to be nil
|
54
|
+
expect(Swedish.new('123').sanitize).to be nil
|
55
|
+
expect(Swedish.new('000000-0000').sanitize).to be nil
|
56
|
+
expect(Swedish.new('0000000000').sanitize).to be nil
|
57
|
+
expect(Swedish.new('asdfghj').sanitize).to be nil
|
58
|
+
expect(Swedish.new('').sanitize).to be nil
|
59
|
+
expect(Swedish.new(12345678).sanitize).to be nil
|
60
|
+
expect(Swedish.new(:really_bad_input).sanitize).to be nil
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'valid numbers' do
|
65
|
+
it 'is the sanitize dnumber' do
|
66
|
+
expect(Swedish.new('19180123-2669').sanitize).to eq '180123-2669'
|
67
|
+
expect(Swedish.new('00180123-2669').sanitize).to eq '180123-2669'
|
68
|
+
expect(Swedish.new('000180123-2669').sanitize).to eq '180123-2669'
|
69
|
+
expect(Swedish.new('050126-1853').sanitize).to eq '050126-1853'
|
70
|
+
expect(Swedish.new('0asdfghj501261853').sanitize).to eq '050126-1853'
|
71
|
+
expect(Swedish.new('050112-2451').sanitize).to eq '050112-2451'
|
72
|
+
expect(Swedish.new('450202-6950').sanitize).to eq '450202-6950'
|
73
|
+
expect(Swedish.new('19450202-6950').sanitize).to eq '450202-6950'
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
44
78
|
describe '#age' do
|
45
79
|
|
46
80
|
before do
|
@@ -90,6 +124,7 @@ describe Swedish, '.generate' do
|
|
90
124
|
it "return the number normalized if the number is valid" do
|
91
125
|
expect( Swedish.new('0501261853').to_s ).to eq '050126-1853'
|
92
126
|
expect( Swedish.new('050126-1853').to_s ).to eq '050126-1853'
|
127
|
+
expect( Swedish.new('0asdfghj501261853').to_s).to eq '050126-1853'
|
93
128
|
expect( Swedish.new("190501261853").to_s ).to eq '050126-1853'
|
94
129
|
expect( Swedish.new("19050126-1853").to_s ).to eq '050126-1853'
|
95
130
|
expect( Swedish.new("19050126-185d3").to_s ).to eq '050126-1853'
|
@@ -180,4 +215,4 @@ describe Swedish, '.generate' do
|
|
180
215
|
end
|
181
216
|
end
|
182
217
|
|
183
|
-
end
|
218
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resident
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bukowskis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
104
|
version: '0'
|
105
105
|
requirements: []
|
106
106
|
rubyforge_project:
|
107
|
-
rubygems_version: 2.
|
107
|
+
rubygems_version: 2.5.1
|
108
108
|
signing_key:
|
109
109
|
specification_version: 4
|
110
110
|
summary: Validate National Identification Numbers.
|