tracking_number 2.0.1 → 2.1.1

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: 01b292bcd87dd48a2a70a616d7cf2393be5b7984c9763683b9ea7e8cc4c3aa46
4
+ data.tar.gz: 698ddb585dd4345a4d84873e08b03bdf0dacc672539096fc57223c85a54f9992
5
5
  SHA512:
6
- metadata.gz: 9bf16cc77823c8702a2691b2e90d43950bd4e270803a9346fc3e9780535e9c62bc92bf4001e0a4edefdd614d8412de7bc5b4a25ebc191b2694eb6a63db05c35b
7
- data.tar.gz: cc24bea7fd7377a5d53e393886470b2daa0a78ae734f82fd1104031d9673784a7b62f9933768c1faab0b25bf1db389bbcb34029fd7b9a4635d555722b60e9273
6
+ metadata.gz: 4ef7f5d25ff0c23c2b3fd934a4b221ae1da5c8edea0f44f6032f07b00600f327a8f43e44a0b7a091640d6dd09e801902d6a82bcc8b740aa350eda287a8698bd2
7
+ data.tar.gz: c48e11b7d5832505757dcb8c416793c3c08f07759aac1555f4b0968e40ffbb957687f0aa50785fc45a3aa853fb2a99dd05b99403f959995a9a373395a2691ec7
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  tracking_number changelog
2
2
 
3
+ ## [2.1.1](https://github.com/jkeen/tracking_number/compare/v2.1.0...v2.1.1) (2025-04-08)
4
+
5
+ # [2.1.0](https://github.com/jkeen/tracking_number/compare/v2.0.1...v2.1.0) (2025-04-07)
6
+
7
+
8
+ ### Features
9
+
10
+ * update tracking_number_data adding support for Old Dominion ([f209148](https://github.com/jkeen/tracking_number/commit/f209148187e08111078c88bd74e011e375e05056))
11
+
3
12
  ## [2.0.1](https://github.com/jkeen/tracking_number/compare/v2.0.0...v2.0.1) (2024-08-20)
4
13
 
5
14
 
@@ -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.1"
3
3
  end
@@ -45,7 +45,6 @@ Gem::Specification.new do |s|
45
45
 
46
46
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
47
47
 
48
- s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
49
48
  s.require_paths = ['lib']
50
49
  s.homepage = 'http://github.com/jkeen/tracking_number'
51
50
  s.licenses = ['MIT']
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.1
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-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -140,8 +140,7 @@ description: This gem identifies valid tracking numbers and the service they're
140
140
  with. It can also tell you a little bit about the package purely from the number—there's
141
141
  quite a bit of info tucked away into those numbers, it turns out.
142
142
  email: jeff@keen.me
143
- executables:
144
- - console
143
+ executables: []
145
144
  extensions: []
146
145
  extra_rdoc_files:
147
146
  - LICENSE.txt
@@ -166,6 +165,7 @@ files:
166
165
  - lib/data/couriers/fedex.json
167
166
  - lib/data/couriers/landmark.json
168
167
  - lib/data/couriers/lasership.json
168
+ - lib/data/couriers/old_dominion.json
169
169
  - lib/data/couriers/ontrac.json
170
170
  - lib/data/couriers/s10.json
171
171
  - lib/data/couriers/ups.json
@@ -190,7 +190,7 @@ homepage: http://github.com/jkeen/tracking_number
190
190
  licenses:
191
191
  - MIT
192
192
  metadata: {}
193
- post_install_message:
193
+ post_install_message:
194
194
  rdoc_options: []
195
195
  require_paths:
196
196
  - lib
@@ -206,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
206
  version: '0'
207
207
  requirements: []
208
208
  rubygems_version: 3.2.32
209
- signing_key:
209
+ signing_key:
210
210
  specification_version: 4
211
211
  summary: Identifies valid tracking numbers
212
212
  test_files: []