verified 1.0.0 → 1.1.0
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 +8 -8
- data/lib/verified/check.rb +24 -8
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzBjMjE3ZmI1ODJiODQzMzA5MzJmNjNlOWE0Yzg0NDNiNTU4NTgzZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZjgyMDg3YzQ2YmFlZjQzYmQzMmQzNWMyNDBmOTU1MTI3M2ExMmFjMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OWZlZWRmNWJlN2I2NWI0YzJhODlhYThmNjU5ZTFiNTY3OGIzNDQ0NzY5NjEz
|
10
|
+
YzdmYTY4Y2VkMzU0MTVjY2VmMjRlYjU3MTg3ODgxOTA2ZTJlZDdlNzhhMDE2
|
11
|
+
MmRhOTNlNjFlNmQ2MWZkZWQxMjNhOTczMDMyYjgyYThkMTBmYzc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NDQxMjVkNWFkNmM2NDUwMjliYTg3ZjkwYWRlNGYxYzlmNzMxMTFiZDczNGI0
|
14
|
+
MWE0ZDczOGUxODQ4NjNlNmVhMGRiODFlMzk4NGYxYTQ3ODJlY2JlYTE2MDZh
|
15
|
+
Zjk3MDk5ZDE1NGU0NjU2YzE0MzVmZDRjYWY5MTA3YjMxNjVhYjQ=
|
data/lib/verified/check.rb
CHANGED
@@ -2,22 +2,23 @@ class Check
|
|
2
2
|
def check(mrz_line_1, mrz_line_2)
|
3
3
|
#make a new digit checker
|
4
4
|
@@digit_checker = CheckDigit.new
|
5
|
+
@@date_converter = YYDate.new
|
5
6
|
#string manipulation to simply reading the first line
|
6
|
-
split = mrz_line_1.
|
7
|
+
split = mrz_line_1.split(/<+/)
|
7
8
|
#get data unformatted from passport
|
8
9
|
doc_data = Hash.new(9)
|
9
10
|
#first line of MRZ
|
10
|
-
doc_data["IssuingState"] = mrz_line_1[2...5]
|
11
|
+
doc_data["IssuingState"] = mrz_line_1[2...5].sub(/<+/, '')
|
11
12
|
doc_data["LastName"] = split[1][3..-1]
|
12
13
|
doc_data["FirstNames"] = split[2..-1]
|
13
14
|
|
14
15
|
#second line of MRZ
|
15
16
|
doc_data["Number"] = mrz_line_2[0...9]
|
16
|
-
doc_data["Nationality"] = mrz_line_2[10...13]
|
17
|
-
doc_data["DateOfBirth"] = mrz_line_2[13...19]
|
18
|
-
doc_data["Gender"] = mrz_line_2[20]
|
19
|
-
doc_data["ExpiryDate"] = mrz_line_2[21...27]
|
20
|
-
doc_data["PersonalNumber"] = mrz_line_2[28...42]
|
17
|
+
doc_data["Nationality"] = mrz_line_2[10...13].sub(/<+/, '')
|
18
|
+
doc_data["DateOfBirth"] = @@date_converter.convert_to_date(mrz_line_2[13...19])
|
19
|
+
doc_data["Gender"] = mrz_line_2[20].sub(/<+/, '')
|
20
|
+
doc_data["ExpiryDate"] = @@date_converter.convert_to_date(mrz_line_2[21...27])
|
21
|
+
doc_data["PersonalNumber"] = mrz_line_2[28...42].sub(/<+/, '')
|
21
22
|
|
22
23
|
#mrz given check digits
|
23
24
|
doc_check = Array.new
|
@@ -63,4 +64,19 @@ class Check::CheckDigit
|
|
63
64
|
end
|
64
65
|
return (values.zip([7,3,1].cycle).map{|(v,w)| v * w}.reduce(:+) % 10).to_s
|
65
66
|
end
|
66
|
-
end
|
67
|
+
end
|
68
|
+
|
69
|
+
class Check::YYDate
|
70
|
+
def convert_to_date(input_date)
|
71
|
+
#yymmdd has the flaw of not knowing which century
|
72
|
+
#uses current year as a cut off to make an accurate prediction
|
73
|
+
current_year_yy = (Date.today.strftime("%Y"))[2..4]
|
74
|
+
input_year_yy = input_date[0..1]
|
75
|
+
input_month = input_date[2..3]
|
76
|
+
input_day = input_date[4..5]
|
77
|
+
return Date.parse(input_day+"-"+input_month+"-"+"19"+input_year_yy) if input_year_yy >= current_year_yy
|
78
|
+
return Date.parse(input_day+"-"+input_month+"-"+"20"+input_year_yy)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
require 'date'
|