tracking_number 2.0.1 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ced09c83642540d591ffa13e64ca6b28be023180cf5489666d0310f91fa1bb25
4
- data.tar.gz: 6a32ca6f7e2ab19865e7979a06d2b94e1e7dd949628376a18d967727ec3a1dce
3
+ metadata.gz: 77e857acd9dad322c9fd97d0a4039d2fbcc137bd7cf3134762b0564733f1494c
4
+ data.tar.gz: ba678d0e8694ff834fef640491099c44729796e242a50ba9c030088ac3664894
5
5
  SHA512:
6
- metadata.gz: 9bf16cc77823c8702a2691b2e90d43950bd4e270803a9346fc3e9780535e9c62bc92bf4001e0a4edefdd614d8412de7bc5b4a25ebc191b2694eb6a63db05c35b
7
- data.tar.gz: cc24bea7fd7377a5d53e393886470b2daa0a78ae734f82fd1104031d9673784a7b62f9933768c1faab0b25bf1db389bbcb34029fd7b9a4635d555722b60e9273
6
+ metadata.gz: f420e4b0e156711c86960888f1c05e34495510bf409dafece5030071d988256cd1b1d82a74cfc355855c9a1c66159d00ff38ca246ada35870b6a4ecb26d647cf
7
+ data.tar.gz: e1639a36e8c68508576d456b9f4bc4d69aa67d2a2595f16ea91e6b1e09ca82b6fb69b5c2875c61caabbb8be363cd2dded572ff75eb2d0cb1640958a1544e7e37
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  tracking_number changelog
2
2
 
3
+ # [2.1.0](https://github.com/jkeen/tracking_number/compare/v2.0.1...v2.1.0) (2025-04-07)
4
+
5
+
6
+ ### Features
7
+
8
+ * update tracking_number_data adding support for Old Dominion ([f209148](https://github.com/jkeen/tracking_number/commit/f209148187e08111078c88bd74e011e375e05056))
9
+
3
10
  ## [2.0.1](https://github.com/jkeen/tracking_number/compare/v2.0.0...v2.0.1) (2024-08-20)
4
11
 
5
12
 
@@ -6,15 +6,15 @@
6
6
  "name": "Amazon Logistics",
7
7
  "id": "amazon_logistics",
8
8
  "regex": [
9
- "\\s*T\\s*B\\s*A\\s*(?<SerialNumber>([0-9]\\s*){12,12})\\s*"
9
+ "\\s*T\\s*B\\s*[ACM]\\s*(?<SerialNumber>([0-9]\\s*){12,12})\\s*"
10
10
  ],
11
11
  "validation": {},
12
12
  "test_numbers": {
13
13
  "valid": [
14
14
  "TBA000000000000",
15
15
  "TBA010000000000",
16
- "TBA 000000000000",
17
- "TBA502887274000"
16
+ "TBC 000000000000",
17
+ "TBM502887274000"
18
18
  ],
19
19
  "invalid": [
20
20
  "TBA50288727400A",
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "Old Dominion Freight Line",
3
+ "courier_code": "old_dominion",
4
+ "tracking_numbers": [
5
+ {
6
+ "name": "Old Dominion",
7
+ "regex": [
8
+ "\\s*(?<SerialNumber>",
9
+ "(7\\s*7\\s*[78]\\s*|0\\s*7\\s*2\\s*|7\\s*8\\s*0\\s*)",
10
+ "([0-9]\\s*){7}",
11
+ ")",
12
+ "(?<CheckDigit>[0-9]\\s*)"
13
+ ],
14
+ "validation": {
15
+ "checksum": {
16
+ "name": "luhn"
17
+ }
18
+ },
19
+ "tracking_url": "https://www.odfl.com/us/en/tools/trace-track-ltl-freight/trace.html?proNumbers=%s",
20
+ "test_numbers": {
21
+ "valid": [
22
+ "07209562763",
23
+ " 0 7 2 0 9 5 6 2 7 6 3 ",
24
+ "77767553207",
25
+ "77806528897",
26
+ "78045768393"
27
+ ],
28
+ "invalid": [
29
+ "07209562773",
30
+ "79927398713",
31
+ "10000000000"
32
+ ]
33
+ }
34
+ },
35
+ {
36
+ "name": "Old Dominion Guaranteed Shipment",
37
+ "regex": [
38
+ "\\s*(?<SerialNumber>",
39
+ "8\\s*0\\s*",
40
+ "([0-9]\\s*){8}",
41
+ ")",
42
+ "(?<CheckDigit>[0-9]\\s*)"
43
+ ],
44
+ "validation": {
45
+ "checksum": {
46
+ "name": "luhn"
47
+ }
48
+ },
49
+ "tracking_url": "https://www.odfl.com/us/en/tools/trace-track-ltl-freight/trace.html?proNumbers=%s",
50
+ "test_numbers": {
51
+ "valid": [
52
+ "80003280379",
53
+ " 8 0 0 0 3 2 8 0 3 7 9 ",
54
+ "80993847369"
55
+ ],
56
+ "invalid": [
57
+ "80003280389",
58
+ "10000000000"
59
+ ]
60
+ }
61
+ }
62
+ ]
63
+ }
@@ -86,6 +86,28 @@ module TrackingNumber
86
86
 
87
87
  computed == check_digit
88
88
  end
89
+
90
+ def validates_luhn?(sequence, check_digit, extras = {})
91
+ total = 0
92
+ sequence.chars.reverse.each_with_index do |c, i|
93
+ x = c.to_i
94
+
95
+ if i.even?
96
+ x *= 2
97
+ end
98
+
99
+ if x > 9
100
+ x -= 9
101
+ end
102
+
103
+ total += x
104
+ end
105
+
106
+ check = (total % 10)
107
+ check = (10 - check) unless (check.zero?)
108
+
109
+ return (check.to_i == check_digit.to_i)
110
+ end
89
111
  end
90
112
  end
91
113
  end
@@ -1,3 +1,3 @@
1
1
  module TrackingNumber
2
- VERSION = "2.0.1"
2
+ VERSION = "2.1.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: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Keen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-20 00:00:00.000000000 Z
11
+ date: 2025-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -166,6 +166,7 @@ files:
166
166
  - lib/data/couriers/fedex.json
167
167
  - lib/data/couriers/landmark.json
168
168
  - lib/data/couriers/lasership.json
169
+ - lib/data/couriers/old_dominion.json
169
170
  - lib/data/couriers/ontrac.json
170
171
  - lib/data/couriers/s10.json
171
172
  - lib/data/couriers/ups.json
@@ -190,7 +191,7 @@ homepage: http://github.com/jkeen/tracking_number
190
191
  licenses:
191
192
  - MIT
192
193
  metadata: {}
193
- post_install_message:
194
+ post_install_message:
194
195
  rdoc_options: []
195
196
  require_paths:
196
197
  - lib
@@ -206,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
207
  version: '0'
207
208
  requirements: []
208
209
  rubygems_version: 3.2.32
209
- signing_key:
210
+ signing_key:
210
211
  specification_version: 4
211
212
  summary: Identifies valid tracking numbers
212
213
  test_files: []