tracking_number 1.1.2 → 1.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
2
  SHA256:
3
- metadata.gz: f0ebf70c34149816925fc8f0395d085c7d011a1bbd6af5c0d745159bde4c297f
4
- data.tar.gz: 78f1d0571abcf5e4a03d5f20c2084cbe895b1edaa633e27b4d9802e764ea903f
3
+ metadata.gz: f6cc354ab8bec0969d5ee99653b5ba5f84022c0b04246d3167f29fa3c090ba6e
4
+ data.tar.gz: 83cb2e829315d7efd4b7a541e6d82b36965b99c0502b70cd071e3c2c818b1a9d
5
5
  SHA512:
6
- metadata.gz: 01ae63c7d08485d12125fed9351b169fd9c79a20d5db1889cc0ce1052490f70faf8ca0180892fa0c432d89605b33540435438d75b96d7fb0798b819f7d9855b1
7
- data.tar.gz: fd3847611f9069300c5e1f16fb006131863953c0dbf7cc24dfbbd38f3c03d8fb2295f375f5359ad4ec7fce6ff4c96ddb27123975e9d318744d34d1a7740a8662
6
+ metadata.gz: 87cbfb9075a3afa2d5092ec7ace7a4403c9e33729cbe8e42ea36dd7b59464ca496495e2ec459ef1f8857fccafb0212f8e4177e71bbac82183913f9eceb52ddf8
7
+ data.tar.gz: 7e52110a5825a5a42c81ff03c9ef1b8e85b9e5cda23be4e56ba23b05deed17eb23aae7de6b568f89b82052e5c83b6fde7555b48dc7b331e1f5cf7b73fc66f6aa
data/CHANGELOG.md CHANGED
@@ -1,4 +1,10 @@
1
1
  # Changelog
2
+
3
+ ## [v1.2](https://github.com/jkeen/tracking_number/tree/v1.2) (2022-11-03)
4
+ Update tracking number definitions from [tracking_number_data](https://github.com/jkeen/tracking_number_data). Now includes Lasership, UPS Waybill, Landmark, Canada Post, On Trac (D*)
5
+
6
+ ## [v1.1.2](https://github.com/jkeen/tracking_number/tree/v1.1.1) (2022-11-03)
7
+ Add method to help tracking_number_data test itself better
2
8
  ## [v1.1.1](https://github.com/jkeen/tracking_number/tree/v1.1.1) (2022-11-03)
3
9
  Fix gem build error
4
10
 
@@ -7,8 +7,7 @@
7
7
  "regex": [
8
8
  "\\s*T\\s*B\\s*A\\s*(?<SerialNumber>([0-9]\\s*){12,12})\\s*"
9
9
  ],
10
- "validation": {
11
- },
10
+ "validation": {},
12
11
  "test_numbers": {
13
12
  "valid": [
14
13
  "TBA000000000000",
@@ -23,6 +22,22 @@
23
22
  "TBB000000000000"
24
23
  ]
25
24
  }
25
+ },
26
+ {
27
+ "name": "Amazon International",
28
+ "regex": [
29
+ "\\s*[AFC]\\s*(?<SerialNumber>([0-9]\\s*){10,10})\\s*"
30
+ ],
31
+ "validation": {},
32
+ "test_numbers": {
33
+ "valid": [
34
+ "C1004444443",
35
+ "C1004444444"
36
+ ],
37
+ "invalid": [
38
+ "D1234567890"
39
+ ]
40
+ }
26
41
  }
27
42
  ]
28
43
  }
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "Canada Post",
3
+ "courier_code": "canada_post",
4
+ "tracking_numbers": [
5
+ {
6
+ "name": "Canada Post (16)",
7
+ "regex": "\\s*(?<SerialNumber>(?<OriginId>([0-9]\\s*){7})([0-9]\\s*){8})(?<CheckDigit>[0-9]\\s*)",
8
+ "validation": {
9
+ "checksum": {
10
+ "name": "mod10",
11
+ "evens_multiplier": 3,
12
+ "odds_multiplier": 1
13
+ }
14
+ },
15
+ "tracking_url": "https://www.canadapost-postescanada.ca/track-reperage/en#/search?searchFor=%s",
16
+ "test_numbers": {
17
+ "valid": [
18
+ "0073938000549297",
19
+ "7035114477138472",
20
+ "4002847016405018"
21
+ ],
22
+ "invalid": [
23
+ "0073938000549292",
24
+ "7035114477138471",
25
+ "5002847016405018"
26
+ ]
27
+ }
28
+ }
29
+ ]
30
+ }
@@ -45,6 +45,22 @@
45
45
  "73891051147"
46
46
  ]
47
47
  }
48
+ },
49
+ {
50
+ "name": "DHL E-Commerce",
51
+ "regex": "\\s*((G\\s*M\\s*)|(L\\s*X\\s*)|(R\\s*X\\s*)|(U\\s*V\\s*)|(C\\s*N\\s*)|(S\\s*G\\s*)|(T\\s*H\\s*)|(I\\s*N\\s*)|(H\\s*K\\s*)|(M\\s*Y\\s*))\\s*(?<SerialNumber>(\\w\\s*){10,39})",
52
+ "validation": {},
53
+ "tracking_url": "http://www.dhl.com/en/express/tracking.html?brand=DHL&AWB=%s",
54
+ "test_numbers": {
55
+ "valid": [
56
+ "GM2951173225174494",
57
+ "GM295117494011169042"
58
+ ],
59
+ "invalid": [
60
+ "GS295117494011169041",
61
+ "GR295117494011169045"
62
+ ]
63
+ }
48
64
  }
49
65
  ]
50
66
  }
@@ -43,7 +43,7 @@
43
43
  {
44
44
  "name": "FedEx Express (34)",
45
45
  "regex": [
46
- "\\s*1\\s*0\\s*0\\s*[0-9]\\s*[0-9]\\s*",
46
+ "\\s*1\\s*0\\s*[0-9]\\s*[0-9]\\s*[0-9]\\s*",
47
47
  "([0-9]\\s*){10}",
48
48
  "(?<DestinationZip>([0-9]\\s*){5})",
49
49
  "(?<SerialNumber>([0-9]\\s*){13})",
@@ -78,7 +78,8 @@
78
78
  "1001921380360001000300639585804382",
79
79
  "1001901781990001000300617767839437",
80
80
  " 1 0 0 1 9 0 1 7 8 1 9 9 0 0 0 1 0 0 0 3 0 0 6 1 7 7 6 7 8 3 9 4 3 7 ",
81
- "1002297871540001000300790695517286"
81
+ "1002297871540001000300790695517286",
82
+ "1027590111820004833500785458233610"
82
83
  ],
83
84
  "invalid": [
84
85
  "1001901781990001000300617767839438"
@@ -89,7 +90,10 @@
89
90
  "name": "FedEx SmartPost",
90
91
  "description": "IMpb CO3 standard",
91
92
  "regex": [
92
- "\\s*(?<ApplicationIdentifier>9\\s*2\\s*)?",
93
+ "\\s*(?:",
94
+ "(?:(?<RoutingApplicationId>4\\s*2\\s*0\\s*)(?<DestinationZip>([0-9]\\s*){5}))?",
95
+ "(?<ApplicationIdentifier>9\\s*2\\s*)",
96
+ ")?",
93
97
  "(?<SerialNumber>",
94
98
  "(?<ServiceType>([0-9]\\s*){3})",
95
99
  "(?<ShipperId>([0-9]\\s*){9})",
@@ -115,10 +119,16 @@
115
119
  "valid": [
116
120
  "61299998820821171811",
117
121
  " 6 1 2 9 9 9 9 8 8 2 0 8 2 1 1 7 1 8 1 1 ",
118
- "9261292700768711948021"
122
+ "9261292700768711948021",
123
+ "420 11213 92 6129098349792366623 8",
124
+ "92 6129098349792366623 8",
125
+ "6129098349792366623 8"
119
126
  ],
120
127
  "invalid": [
121
- "9261292700768711948020"
128
+ "9261292700768711948020",
129
+ "420 11213 6129098349792366623 8",
130
+ "420 92 6129098349792366623 8",
131
+ "11213 92 6129098349792366623 8"
122
132
  ]
123
133
  }
124
134
  },
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "Landmark Global LTN",
3
+ "courier_code": "landmark",
4
+ "tracking_numbers": [
5
+ {
6
+ "name": "Landmark Global LTN",
7
+ "regex": [
8
+ "\\s*L\\s*T\\s*N\\s*(?<SerialNumber>([0-9]\\s*){8})\\s*N\\s*1"
9
+ ],
10
+ "tracking_url": "https://track.landmarkglobal.com/?search=%s",
11
+ "validation": {},
12
+ "test_numbers": {
13
+ "valid": [
14
+ "LTN74207623N1",
15
+ "LTN74209518N1",
16
+ "LTN74224021N1"
17
+ ],
18
+ "invalid": [
19
+ "LSN74209518N2",
20
+ "LSN74209518N1"
21
+ ]
22
+ }
23
+ }
24
+ ]
25
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "LaserShip",
3
+ "courier_code": "lasership",
4
+ "tracking_numbers": [
5
+ {
6
+ "name": "LaserShip LX",
7
+ "regex": [
8
+ "\\s*L\\s*X\\s*1\\s*[3-8]\\s*(?<SerialNumber>([0-9]\\s*){6,6})\\s*"
9
+ ],
10
+ "validation": {
11
+ },
12
+ "test_numbers": {
13
+ "valid": [
14
+ "LX17635036",
15
+ "LX 176 35035",
16
+ "LX17635034"
17
+ ],
18
+ "invalid": [
19
+ "LX1763503N",
20
+ "LC176350N6",
21
+ "LA17635036",
22
+ " L A 1 7 6 3 5 0 3 6 "
23
+ ]
24
+ }
25
+ },
26
+ {
27
+ "name": "LaserShip 1LS7 (15)",
28
+ "regex": [
29
+ "\\s*1\\s*L\\s*S\\s*7\\s*[12]\\s*([0-9]\\s*){4,4}",
30
+ "(?<SerialNumber>([0-9]\\s*){6,6})\\s*"
31
+ ],
32
+ "validation": {
33
+ },
34
+ "test_numbers": {
35
+ "valid": [
36
+ "1LS717793482164",
37
+ "1LS724505321754",
38
+ "1LS720000000000",
39
+ " 1 L S 7 2 0 0 0 0 0 0 0 0 0 0 "
40
+ ],
41
+ "invalid": [
42
+ "1LX734505321754"
43
+ ]
44
+ }
45
+ },
46
+ {
47
+ "name": "LaserShip 1LS7 (18)",
48
+ "regex": [
49
+ "\\s*1\\s*L\\s*S\\s*7\\s*",
50
+ "[12]\\s*([0-9]\\s*){2,2}\\s*0\\s*1\\s*[1234]\\s*",
51
+ "\\s*(?<SerialNumber>([0-9]\\s*){6,6})",
52
+ "-\\s*1\\s*"
53
+ ],
54
+ "validation": {
55
+ },
56
+ "test_numbers": {
57
+ "valid": [
58
+ "1LS7119013618127-1",
59
+ " 1 L S 7 1 1 9 0 1 3 6 1 8 1 2 7 - 1 "
60
+ ],
61
+ "invalid": [
62
+ "1LS7119013618127-2"
63
+ ]
64
+ }
65
+ }
66
+ ]
67
+ }
@@ -23,13 +23,45 @@
23
23
  "valid": [
24
24
  "C11031500001879",
25
25
  " C 1 1 0 3 1 5 0 0 0 0 1 8 7 9 ",
26
- "C10999911320231"
26
+ "C10999911320231",
27
+ "C11121552953069",
28
+ "C11121553156000",
29
+ "C11121552829468"
27
30
  ],
28
31
  "invalid": [
29
32
  "C10000000000000",
30
33
  "C11031500001889"
31
34
  ]
32
35
  }
36
+ },
37
+ {
38
+ "name": "OnTrac D",
39
+ "regex": "\\s*D\\s*(?<SerialNumber>([0-9]\\s*){13})(?<CheckDigit>[0-9]\\s*)",
40
+ "validation": {
41
+ "checksum": {
42
+ "name": "mod10",
43
+ "evens_multiplier": 1,
44
+ "odds_multiplier": 2
45
+ },
46
+ "serial_number_format": {
47
+ "prepend_if": {
48
+ "matches_regex": "^(?!5).+$",
49
+ "content": "5"
50
+ }
51
+ }
52
+ },
53
+ "tracking_url": "http://www.ontrac.com/trackingres.asp?tracking_number=%s",
54
+ "test_numbers": {
55
+ "valid": [
56
+ "D10011354453707",
57
+ "D10011345983010",
58
+ "D10011342332145"
59
+ ],
60
+ "invalid": [
61
+ "D10011345983012",
62
+ "D10011342332144"
63
+ ]
64
+ }
33
65
  }
34
66
  ]
35
67
  }
@@ -9,7 +9,7 @@
9
9
  "(?<ShipperId>(?:[A-Z0-9]\\s*){6,6})",
10
10
  "(?<ServiceType>(?:[A-Z0-9]\\s*){2,2})",
11
11
  "(?<PackageId>(?:[A-Z0-9]\\s*){7,7}))",
12
- "(?<CheckDigit>[A-Z0-9]\\s*)"
12
+ "(?<CheckDigit>[0-9]\\s*)"
13
13
  ],
14
14
  "validation": {
15
15
  "checksum": {
@@ -134,6 +134,50 @@
134
134
  "1Z1111111111111111"
135
135
  ]
136
136
  }
137
+ },
138
+ {
139
+ "name": "UPS Waybill",
140
+ "regex": [
141
+ "\\s*(?<ServiceType>([A-Z]\\s*){1})",
142
+ "(?<SerialNumber>(?:[A-Z0-9]\\s*){9,9})",
143
+ "(?<CheckDigit>[A-Z0-9]\\s*)"
144
+ ],
145
+ "validation": {
146
+ "checksum": {
147
+ "name": "mod10",
148
+ "evens_multiplier": 1,
149
+ "odds_multiplier": 2
150
+ }
151
+ },
152
+ "additional": [
153
+ {
154
+ "name": "Service Type",
155
+ "regex_group_name": "ServiceType",
156
+ "lookup": [
157
+ {
158
+ "matches": "J",
159
+ "name": "UPS Next Day Express"
160
+ },
161
+ {
162
+ "matches": "K",
163
+ "name": "UPS Ground"
164
+ }
165
+ ]
166
+ }
167
+ ],
168
+ "tracking_url": "https://wwwapps.ups.com/WebTracking/track?track=yes&trackNums=%s",
169
+ "test_numbers": {
170
+ "valid": [
171
+ "K1506235620",
172
+ "K2479825491",
173
+ "J4603636537"
174
+ ],
175
+ "invalid": [
176
+ "K1506235622",
177
+ "K2479825492",
178
+ "J4603636538"
179
+ ]
180
+ }
137
181
  }
138
182
  ]
139
183
  }
@@ -1,3 +1,3 @@
1
1
  module TrackingNumber
2
- VERSION = "1.1.2"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tracking_number
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Keen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-03 00:00:00.000000000 Z
11
+ date: 2022-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -157,8 +157,11 @@ files:
157
157
  - README.md
158
158
  - Rakefile
159
159
  - lib/data/couriers/amazon.json
160
+ - lib/data/couriers/canadapost.json
160
161
  - lib/data/couriers/dhl.json
161
162
  - lib/data/couriers/fedex.json
163
+ - lib/data/couriers/landmark.json
164
+ - lib/data/couriers/lasership.json
162
165
  - lib/data/couriers/ontrac.json
163
166
  - lib/data/couriers/s10.json
164
167
  - lib/data/couriers/ups.json