tracking_number 0.10.5 → 3.0.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.
Files changed (60) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +2 -0
  3. data/.github/dependabot.yml +22 -0
  4. data/.github/workflows/release.yml +36 -0
  5. data/.github/workflows/ruby.yml +35 -0
  6. data/.gitmodules +3 -0
  7. data/.tool-versions +1 -0
  8. data/CHANGELOG.md +318 -0
  9. data/Gemfile +4 -2
  10. data/README.md +112 -15
  11. data/Rakefile +4 -1
  12. data/bin/console +14 -0
  13. data/lib/data/couriers/amazon.json +45 -0
  14. data/lib/data/couriers/canadapost.json +33 -0
  15. data/lib/data/couriers/canpar.json +29 -0
  16. data/lib/data/couriers/dhl.json +97 -0
  17. data/lib/data/couriers/dpd.json +345 -0
  18. data/lib/data/couriers/fedex.json +291 -0
  19. data/lib/data/couriers/gofo.json +24 -0
  20. data/lib/data/couriers/landmark.json +26 -0
  21. data/lib/data/couriers/lasership.json +105 -0
  22. data/lib/data/couriers/old_dominion.json +65 -0
  23. data/lib/data/couriers/ontrac.json +74 -0
  24. data/lib/data/couriers/purolator.json +50 -0
  25. data/lib/data/couriers/s10.json +1443 -0
  26. data/lib/data/couriers/speedee.json +26 -0
  27. data/lib/data/couriers/ups.json +197 -0
  28. data/lib/data/couriers/usps.json +272 -0
  29. data/lib/data/couriers/yodel.json +29 -0
  30. data/lib/data/couriers/yunexpress.json +25 -0
  31. data/lib/tracking_number/active_model_validator.rb +1 -1
  32. data/lib/tracking_number/base.rb +291 -22
  33. data/lib/tracking_number/checksum_validations.rb +119 -0
  34. data/lib/tracking_number/info.rb +26 -0
  35. data/lib/tracking_number/loader.rb +82 -0
  36. data/lib/tracking_number/partnership.rb +7 -0
  37. data/lib/tracking_number/unknown.rb +45 -0
  38. data/lib/tracking_number/version.rb +1 -1
  39. data/lib/tracking_number.rb +69 -17
  40. data/package.json +77 -0
  41. data/test/partnership_test.rb +71 -0
  42. data/test/renamed_types_test.rb +44 -0
  43. data/test/test_helper.rb +14 -7
  44. data/test/tracking_number_meta_test.rb +145 -0
  45. data/test/tracking_number_test.rb +191 -0
  46. data/tracking_number.gemspec +53 -22
  47. data/yarn.lock +3425 -0
  48. metadata +131 -46
  49. data/.travis.yml +0 -12
  50. data/VERSION +0 -1
  51. data/lib/tracking_number/dhl.rb +0 -34
  52. data/lib/tracking_number/fedex.rb +0 -156
  53. data/lib/tracking_number/ontrac.rb +0 -34
  54. data/lib/tracking_number/ups.rb +0 -108
  55. data/lib/tracking_number/usps.rb +0 -166
  56. data/test/dhl_tracking_number_test.rb +0 -35
  57. data/test/fedex_tracking_number_test.rb +0 -75
  58. data/test/ontrac_tracking_number_test.rb +0 -24
  59. data/test/ups_tracking_number_test.rb +0 -36
  60. data/test/usps_tracking_number_test.rb +0 -73
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: '0361787dd819144799899504060b5fad1c152fd8'
4
- data.tar.gz: 93e3270a902aef5ac81580c5add4c7f94872d9ac
2
+ SHA256:
3
+ metadata.gz: 71f01e80c118f12c210f3c9a5195edf0c9d257c37ff4ce36529962f4131a57ed
4
+ data.tar.gz: 79519ddef14f7728eb6de46437360a9040368e261ce3dba4cdadf9a9b382891e
5
5
  SHA512:
6
- metadata.gz: 771dd5aa40219a4f6386a2c73ddfda1b10e0a1230ea1b672efc4af8c0d41472080ae6a036f4c90c99384e93024feec8abc9f831b6c593d8ff2da2301690fc51d
7
- data.tar.gz: a30fbe05e145adf611bb8a13b375246926c36dd81509d47210f05c227a637e0f7daffe748df739eb692adeb6ef82713a4cf57ae8d45d30770ebec8cc1f02a10e
6
+ metadata.gz: 86ef4bdd51d50a76f26b0bc53f17db5518c48973ecc715b90058dc446c1a7ac2558db35a75f9a572837e4aacbf9e6fa33b2c5870dfc21076a50a8c538e156313
7
+ data.tar.gz: f78a9a8b106ce172f87f231c9d59aa6c52a1f76b8a6b471aaa5a17ac92ee605d71cab5d216b3032d3eba8fd0244a406f6358f6be465e1332c1edce32d07c9ad8
@@ -0,0 +1,2 @@
1
+ github: [jkeen]
2
+ buy_me_a_coffee: jeffkeen
@@ -0,0 +1,22 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "11:00"
8
+ open-pull-requests-limit: 10
9
+ ignore:
10
+ - dependency-name: activemodel
11
+ versions:
12
+ - 6.1.1
13
+ - 6.1.2
14
+ - 6.1.2.1
15
+ - 6.1.3
16
+ - dependency-name: rake
17
+ versions:
18
+ - 13.0.3
19
+ - package-ecosystem: "gitsubmodule"
20
+ directory: "lib/data"
21
+ schedule:
22
+ interval: "daily"
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: Generate New Release
3
+
4
+ on:
5
+ workflow_dispatch:
6
+
7
+ jobs:
8
+ release:
9
+ name: Release
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - name: Checkout
13
+ uses: actions/checkout@v3
14
+ with:
15
+ submodules: true
16
+ persist-credentials: false
17
+ - name: Set up Ruby
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: ${{ matrix.ruby }}
21
+ - name: Build
22
+ run: |
23
+ gem install bundler
24
+ git submodule update --init --recursive
25
+ bundle install --jobs 4 --retry 3
26
+ - name: Setup Node.js
27
+ uses: actions/setup-node@v2
28
+ with:
29
+ node-version: 14
30
+ - name: Install Dependencies
31
+ run: yarn install --frozen-lockfile
32
+ - name: Release
33
+ env:
34
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
35
+ GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }}
36
+ run: node_modules/.bin/semantic-release
@@ -0,0 +1,35 @@
1
+ name: Ruby
2
+ on: [push, pull_request]
3
+ jobs:
4
+ test:
5
+ strategy:
6
+ fail-fast: false
7
+ matrix:
8
+ os: [ ubuntu-latest ]
9
+ ruby: [ '3.0', '3.1', '3.2', '3.3' ]
10
+ runs-on: ${{ matrix.os }}
11
+ steps:
12
+ - uses: actions/checkout@v3
13
+ with:
14
+ submodules: true
15
+ - name: Set up Ruby
16
+ uses: ruby/setup-ruby@v1
17
+ with:
18
+ ruby-version: ${{ matrix.ruby }}
19
+ - name: Build and test with Rake
20
+ run: |
21
+ gem install bundler
22
+ git submodule update --init --recursive
23
+ bundle install --jobs 4 --retry 3
24
+ bundle exec rake
25
+ publish:
26
+ name: Release
27
+ runs-on: ubuntu-latest
28
+ if: github.ref == 'refs/heads/main'
29
+ needs: [test]
30
+ steps:
31
+ - name: Dispatch Release
32
+ uses: benc-uk/workflow-dispatch@v1
33
+ with:
34
+ workflow: Generate New Release
35
+ token: ${{ secrets.GITHUB_TOKEN }}
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "lib/data"]
2
+ path = lib/data
3
+ url = https://github.com/jkeen/tracking_number_data
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.0.3
data/CHANGELOG.md ADDED
@@ -0,0 +1,318 @@
1
+ tracking_number changelog
2
+
3
+ # [3.0.0](https://github.com/jkeen/tracking_number/compare/v2.5.0...v3.0.0) (2026-08-15)
4
+
5
+
6
+ * feat!: Update to tracking_number_data 2.0, which rebuilds the IMpb USPS definitions from Publication 199 and absorbs the DHL and Fedex definitions that described the same tracking number. ([448e953](https://github.com/jkeen/tracking_number/commit/448e9534b0be8d2f205de5712e3215281922de99))
7
+
8
+
9
+ ### BREAKING CHANGES
10
+
11
+ * `fedex_smartpost`, `dhl_ecommerce_30` and `usps_32V2` are absorbed into `usps_impb_c`, which is the definition they were always describing. `usps_91` and `usps_22` become `usps_impb_c` and `usps_impb_n`, and Application Identifier 91 splits off to `usps_legacy`. Every number these matched still decodes, now as USPS.
12
+
13
+ No active definitions declare `partners` anymore, but it remains valid in our data spec for potential future use.
14
+
15
+ # [2.5.0](https://github.com/jkeen/tracking_number/compare/v2.4.0...v2.5.0) (2026-08-13)
16
+
17
+
18
+ ### Features
19
+
20
+ * update to tracking_number_data 1.12, which includes support for Canpar, Purolator, Spee-Dee, YunExpress, and an updated FedEx matcher ([ca67edf](https://github.com/jkeen/tracking_number/commit/ca67edf0eaeab33171008bf115e96bdcf55c0d4b))
21
+
22
+ # [2.4.0](https://github.com/jkeen/tracking_number/compare/v2.3.0...v2.4.0) (2025-08-21)
23
+
24
+
25
+ ### Features
26
+
27
+ * update to tracking_number_data 1.9.0 ([f885bfd](https://github.com/jkeen/tracking_number/commit/f885bfd956ffacb22f38967754ec14551bca8d50))
28
+
29
+ # [2.3.0](https://github.com/jkeen/tracking_number/compare/v2.2.0...v2.3.0) (2025-08-21)
30
+
31
+
32
+ ### Bug Fixes
33
+
34
+ * prevent error when lookup is balnk for an additional info group ([cce4ddd](https://github.com/jkeen/tracking_number/commit/cce4dddf1ec4b62baa684af24a8be96893fd33a6))
35
+
36
+
37
+ ### Features
38
+
39
+ * add validation option to mod10 to validate in reverse ([3736b50](https://github.com/jkeen/tracking_number/commit/3736b5003d2cc4cbaec2db50f8b64add61897731))
40
+
41
+ # [2.2.0](https://github.com/jkeen/tracking_number/compare/v2.1.1...v2.2.0) (2025-06-24)
42
+
43
+
44
+ ### Bug Fixes
45
+
46
+ * bump tracking_number_data to 1.8.1 to tighten up e-commerce tracking number detection ([a2409df](https://github.com/jkeen/tracking_number/commit/a2409df7b9b1c2d9a89bd3323304bf4ba3d19e8a))
47
+
48
+
49
+ ### Features
50
+
51
+ * update to tracking number data 1.8 adding support for DHL 14 digit numbers ([5c14110](https://github.com/jkeen/tracking_number/commit/5c1411041544e400e25d94f385d2d230c5bedbbd))
52
+
53
+ ## [2.1.1](https://github.com/jkeen/tracking_number/compare/v2.1.0...v2.1.1) (2025-04-08)
54
+
55
+ # [2.1.0](https://github.com/jkeen/tracking_number/compare/v2.0.1...v2.1.0) (2025-04-07)
56
+
57
+
58
+ ### Features
59
+
60
+ * update tracking_number_data adding support for Old Dominion ([f209148](https://github.com/jkeen/tracking_number/commit/f209148187e08111078c88bd74e011e375e05056))
61
+
62
+ ## [2.0.1](https://github.com/jkeen/tracking_number/compare/v2.0.0...v2.0.1) (2024-08-20)
63
+
64
+
65
+ ### Bug Fixes
66
+
67
+ * upcase body before searching to find lowercase tracking numbers ([#85](https://github.com/jkeen/tracking_number/issues/85)) ([e07c754](https://github.com/jkeen/tracking_number/commit/e07c754ba3647ae4e587b30a5c51bfa23a4589e5))
68
+
69
+ # [2.0.0](https://github.com/jkeen/tracking_number/compare/v1.6.0...v2.0.0) (2024-08-18)
70
+
71
+ # [1.6.0](https://github.com/jkeen/tracking_number/compare/v1.5.0...v1.6.0) (2023-11-14)
72
+
73
+
74
+ ### Bug Fixes
75
+
76
+ * resolve error with active support deprecator ([8b97160](https://github.com/jkeen/tracking_number/commit/8b97160a2178b771b340f8459bfa77db5791aeb2))
77
+
78
+
79
+ ### Features
80
+
81
+ * update to tracking_number_data 1.6.1 ([811a07b](https://github.com/jkeen/tracking_number/commit/811a07bf10d171b56069c927d84266e8a931e073))
82
+
83
+ # [1.5.0](https://github.com/jkeen/tracking_number/compare/v1.4.1...v1.5.0) (2023-08-14)
84
+
85
+
86
+ ### Features
87
+
88
+ * include partnership indicator in inspect ([834a8c4](https://github.com/jkeen/tracking_number/commit/834a8c461ef7c58bff9e1e3ea43e65f6d11c3897))
89
+ * update to tracking_number_data 1.6.0 ([6c6293e](https://github.com/jkeen/tracking_number/commit/6c6293edc31de905163d0cee2a76e5b0e27c5f62))
90
+
91
+ ## [1.4.1](https://github.com/jkeen/tracking_number/compare/v1.4.0...v1.4.1) (2023-05-19)
92
+
93
+ # [1.4.0](https://github.com/jkeen/tracking_number/compare/v1.3.5...v1.4.0) (2023-05-15)
94
+
95
+
96
+ ### Features
97
+
98
+ * add partnership support with tracking_number_data 1.5 ([75fe530](https://github.com/jkeen/tracking_number/commit/75fe5304e933679aff89a91a93d2b7cf58c1fe5c))
99
+ * update to tracking number data 1.5 ([237ad3c](https://github.com/jkeen/tracking_number/commit/237ad3c82230d39b415df56eb8c8c9eeb22ba15c))
100
+
101
+ ## [1.3.5](https://github.com/jkeen/tracking_number/compare/v1.3.4...v1.3.5) (2023-01-09)
102
+
103
+
104
+ ### Bug Fixes
105
+
106
+ * modify release process to include submodules, the lack of which caused the 1.3.2 gem release to not work at all ([578af83](https://github.com/jkeen/tracking_number/commit/578af83d1b9da51c6edb8400d3aba8b195b66629))
107
+
108
+ ## [1.3.2](https://github.com/jkeen/tracking_number/compare/v1.3.1...v1.3.2) (2022-12-23)
109
+
110
+ # Changelog
111
+
112
+ ## [v1.2](https://github.com/jkeen/tracking_number/tree/v1.2) (2022-11-03)
113
+ 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*)
114
+
115
+ ## [v1.1.2](https://github.com/jkeen/tracking_number/tree/v1.1.1) (2022-11-03)
116
+ Add method to help tracking_number_data test itself better
117
+ ## [v1.1.1](https://github.com/jkeen/tracking_number/tree/v1.1.1) (2022-11-03)
118
+ Fix gem build error
119
+
120
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v1.1.0...v1.1.0)
121
+
122
+ ## [v1.1.0](https://github.com/jkeen/tracking_number/tree/v1.1.0) (2022-11-03)
123
+
124
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v1.0.7...v1.1)
125
+
126
+ ## [v1.0.7](https://github.com/jkeen/tracking_number/tree/v1.0.7) (2022-01-17)
127
+
128
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v1.0.6...v1.0.7)
129
+
130
+ **Merged pull requests:**
131
+
132
+ - Upgrade to GitHub-native Dependabot [\#56](https://github.com/jkeen/tracking_number/pull/56) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
133
+
134
+ ## [v1.0.6](https://github.com/jkeen/tracking_number/tree/v1.0.6) (2021-02-01)
135
+
136
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v1.0.5...v1.0.6)
137
+
138
+ **Merged pull requests:**
139
+
140
+ - Stop using \<\< to add error message [\#51](https://github.com/jkeen/tracking_number/pull/51) ([dan-jensen](https://github.com/dan-jensen))
141
+
142
+ ## [v1.0.5](https://github.com/jkeen/tracking_number/tree/v1.0.5) (2018-12-08)
143
+
144
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v1.0.4...v1.0.5)
145
+
146
+ ## [v1.0.4](https://github.com/jkeen/tracking_number/tree/v1.0.4) (2018-12-08)
147
+
148
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v1.0.3...v1.0.4)
149
+
150
+ **Closed issues:**
151
+
152
+ - Tracking URLs? [\#34](https://github.com/jkeen/tracking_number/issues/34)
153
+ - TrackingNumber.search returning no results [\#33](https://github.com/jkeen/tracking_number/issues/33)
154
+
155
+ **Merged pull requests:**
156
+
157
+ - fix package\_type not returning a value [\#36](https://github.com/jkeen/tracking_number/pull/36) ([ericlewis](https://github.com/ericlewis))
158
+ - \[CI\] Test against patched versions [\#35](https://github.com/jkeen/tracking_number/pull/35) ([nicolasleger](https://github.com/nicolasleger))
159
+
160
+ ## [v1.0.3](https://github.com/jkeen/tracking_number/tree/v1.0.3) (2018-02-06)
161
+
162
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v1.0.2...v1.0.3)
163
+
164
+ **Closed issues:**
165
+
166
+ - Failure to require: cannot load such file -- pry [\#32](https://github.com/jkeen/tracking_number/issues/32)
167
+
168
+ ## [v1.0.2](https://github.com/jkeen/tracking_number/tree/v1.0.2) (2018-02-05)
169
+
170
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v1.0.1...v1.0.2)
171
+
172
+ ## [v1.0.1](https://github.com/jkeen/tracking_number/tree/v1.0.1) (2018-02-05)
173
+
174
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v1.0.0...v1.0.1)
175
+
176
+ ## [v1.0.0](https://github.com/jkeen/tracking_number/tree/v1.0.0) (2018-02-02)
177
+
178
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v1.0.0.pre...v1.0.0)
179
+
180
+ **Closed issues:**
181
+
182
+ - Add Royal Mail tracking number recognition [\#21](https://github.com/jkeen/tracking_number/issues/21)
183
+
184
+ ## [v1.0.0.pre](https://github.com/jkeen/tracking_number/tree/v1.0.0.pre) (2018-01-31)
185
+
186
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.10.5...v1.0.0.pre)
187
+
188
+ **Merged pull requests:**
189
+
190
+ - Integrate tracking\_number\_data [\#28](https://github.com/jkeen/tracking_number/pull/28) ([jkeen](https://github.com/jkeen))
191
+
192
+ ## [v0.10.5](https://github.com/jkeen/tracking_number/tree/v0.10.5) (2018-01-28)
193
+
194
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.10.4...v0.10.5)
195
+
196
+ ## [v0.10.4](https://github.com/jkeen/tracking_number/tree/v0.10.4) (2018-01-27)
197
+
198
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.10.3...v0.10.4)
199
+
200
+ **Closed issues:**
201
+
202
+ - random number detected as FedExSmartPost [\#30](https://github.com/jkeen/tracking_number/issues/30)
203
+ - I created a Java port of your library [\#26](https://github.com/jkeen/tracking_number/issues/26)
204
+ - hey buddy why'd you yank my version [\#25](https://github.com/jkeen/tracking_number/issues/25)
205
+ - USPS validation fails with USPS samples [\#23](https://github.com/jkeen/tracking_number/issues/23)
206
+
207
+ ## [v0.10.3](https://github.com/jkeen/tracking_number/tree/v0.10.3) (2017-02-21)
208
+
209
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.10.2...v0.10.3)
210
+
211
+ **Closed issues:**
212
+
213
+ - USPS tracking numbers being labled as fedex [\#24](https://github.com/jkeen/tracking_number/issues/24)
214
+ - TODO comment in FedEx matcher [\#22](https://github.com/jkeen/tracking_number/issues/22)
215
+
216
+ ## [v0.10.2](https://github.com/jkeen/tracking_number/tree/v0.10.2) (2015-10-01)
217
+
218
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.10.1...v0.10.2)
219
+
220
+ **Merged pull requests:**
221
+
222
+ - Add support for some UPS and USPS test tracking numbers [\#20](https://github.com/jkeen/tracking_number/pull/20) ([dimroc](https://github.com/dimroc))
223
+
224
+ ## [v0.10.1](https://github.com/jkeen/tracking_number/tree/v0.10.1) (2015-05-08)
225
+
226
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.10.0...v0.10.1)
227
+
228
+ ## [v0.10.0](https://github.com/jkeen/tracking_number/tree/v0.10.0) (2015-05-08)
229
+
230
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.9.1...v0.10.0)
231
+
232
+ **Merged pull requests:**
233
+
234
+ - add support for 26 digit usps tracking numbers that start with 9\[1-5\] [\#19](https://github.com/jkeen/tracking_number/pull/19) ([pickerflicker](https://github.com/pickerflicker))
235
+
236
+ ## [v0.9.1](https://github.com/jkeen/tracking_number/tree/v0.9.1) (2015-04-15)
237
+
238
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.9.0...v0.9.1)
239
+
240
+ **Closed issues:**
241
+
242
+ - USPS validation failing [\#15](https://github.com/jkeen/tracking_number/issues/15)
243
+
244
+ **Merged pull requests:**
245
+
246
+ - Fix fedex smartpost validation [\#18](https://github.com/jkeen/tracking_number/pull/18) ([stevenbarragan](https://github.com/stevenbarragan))
247
+
248
+ ## [v0.9.0](https://github.com/jkeen/tracking_number/tree/v0.9.0) (2015-04-03)
249
+
250
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.8.6...v0.9.0)
251
+
252
+ **Merged pull requests:**
253
+
254
+ - AddFedEx SmartPost and USPS concatenated barcodes [\#17](https://github.com/jkeen/tracking_number/pull/17) ([stevenbarragan](https://github.com/stevenbarragan))
255
+
256
+ ## [v0.8.6](https://github.com/jkeen/tracking_number/tree/v0.8.6) (2015-04-01)
257
+
258
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.8.5...v0.8.6)
259
+
260
+ **Merged pull requests:**
261
+
262
+ - Add support for USPS tracking numbers starting with '93' [\#16](https://github.com/jkeen/tracking_number/pull/16) ([heymackey](https://github.com/heymackey))
263
+
264
+ ## [v0.8.5](https://github.com/jkeen/tracking_number/tree/v0.8.5) (2015-02-23)
265
+
266
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.8.0...v0.8.5)
267
+
268
+ **Merged pull requests:**
269
+
270
+ - Update USPS rules to support 95… prefix [\#14](https://github.com/jkeen/tracking_number/pull/14) ([dimroc](https://github.com/dimroc))
271
+
272
+ ## [v0.8.0](https://github.com/jkeen/tracking_number/tree/v0.8.0) (2015-01-07)
273
+
274
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.7.0...v0.8.0)
275
+
276
+ **Merged pull requests:**
277
+
278
+ - Actually support :except option and not just :exception [\#13](https://github.com/jkeen/tracking_number/pull/13) ([dimroc](https://github.com/dimroc))
279
+
280
+ ## [v0.7.0](https://github.com/jkeen/tracking_number/tree/v0.7.0) (2014-04-18)
281
+
282
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.4.0...v0.7.0)
283
+
284
+ **Closed issues:**
285
+
286
+ - USPS apparently has a new application id [\#3](https://github.com/jkeen/tracking_number/issues/3)
287
+
288
+ **Merged pull requests:**
289
+
290
+ - Add active\_model validation support [\#11](https://github.com/jkeen/tracking_number/pull/11) ([cluesque](https://github.com/cluesque))
291
+ - Switch to simplecov from rcov, all working [\#9](https://github.com/jkeen/tracking_number/pull/9) ([Capncavedan](https://github.com/Capncavedan))
292
+ - Remove extraneous whitespace [\#8](https://github.com/jkeen/tracking_number/pull/8) ([Capncavedan](https://github.com/Capncavedan))
293
+ - Fix broken rake Rake::RDocTask call [\#6](https://github.com/jkeen/tracking_number/pull/6) ([Capncavedan](https://github.com/Capncavedan))
294
+ - Add attr\_accessor for original\_number [\#5](https://github.com/jkeen/tracking_number/pull/5) ([jordoh](https://github.com/jordoh))
295
+ - Add additional application ID [\#4](https://github.com/jkeen/tracking_number/pull/4) ([lucaswiman](https://github.com/lucaswiman))
296
+
297
+ ## [v0.4.0](https://github.com/jkeen/tracking_number/tree/v0.4.0) (2011-04-26)
298
+
299
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.3.0...v0.4.0)
300
+
301
+ **Merged pull requests:**
302
+
303
+ - Add support for OnTrac [\#2](https://github.com/jkeen/tracking_number/pull/2) ([electrum](https://github.com/electrum))
304
+ - Make compatible with Ruby 1.9 [\#1](https://github.com/jkeen/tracking_number/pull/1) ([electrum](https://github.com/electrum))
305
+
306
+ ## [v0.3.0](https://github.com/jkeen/tracking_number/tree/v0.3.0) (2011-02-09)
307
+
308
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.2.0...v0.3.0)
309
+
310
+ ## [v0.2.0](https://github.com/jkeen/tracking_number/tree/v0.2.0) (2011-01-29)
311
+
312
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/v0.1.0...v0.2.0)
313
+
314
+ ## [v0.1.0](https://github.com/jkeen/tracking_number/tree/v0.1.0) (2010-12-31)
315
+
316
+ [Full Changelog](https://github.com/jkeen/tracking_number/compare/a642142616d66e200936e6d8567aebb0139c1872...v0.1.0)
317
+
318
+ \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
- source "http://rubygems.org"
1
+ # frozen_string_literal: true
2
+
3
+ source 'http://rubygems.org'
2
4
  # Specify your gem's dependencies in tracking_number.gemspec
3
- gemspec
5
+ gemspec
data/README.md CHANGED
@@ -1,35 +1,133 @@
1
- ## tracking_number
1
+ [![Ruby](https://github.com/jkeen/tracking_number/actions/workflows/ruby.yml/badge.svg)](https://github.com/jkeen/tracking_number/actions/workflows/ruby.yml)
2
+ [![Gem Version](https://badge.fury.io/rb/tracking_number.svg)](https://badge.fury.io/rb/tracking_number)
3
+ [![Gem](https://img.shields.io/gem/dt/tracking_number.svg)]()
2
4
 
3
- This gem identifies valid tracking numbers and the service they're associated with. It can also tell you a little bit about the package purely from the number—there's quite a bit of info tucked away into those numbers, it turns out.
5
+ ## Tracking Number
6
+
7
+ This gem identifies valid tracking numbers and can tell you a little bit about the shipment just from the number—there's quite a bit of info tucked away into those numbers, it turns out.
8
+
9
+ It detects tracking numbers from USPS, UPS, FedEx, Amazon, DHL, OnTrac, LaserShip, Canada Post, DPD, Purolator, Old Dominion Freight Line, Spee-Dee Delivery, Canpar, YunExpress, Landmark Global, GOFO Express, and any carrier using the S10 international standard.
4
10
 
5
11
  This gem does not do tracking. That is left up to you.
6
12
 
13
+ All the matching data is kept in [tracking_number_data](https://github.com/jkeen/tracking_number_data) and displayed in full on [trackingnumber.fyi](https://trackingnumber.fyi).
14
+
15
+ ## Usage
16
+
17
+ #### Checking an individual tracking number
7
18
  ```ruby
8
19
  t = TrackingNumber.new("MYSTERY_TRACKING_NUMBER")
9
20
  # => #<TrackingNumber::Unknown MYSTERY_TRACKING_NUMBER>
10
-
11
21
  t.valid? #=> false
12
- t.carrier #=> :unknown
13
22
 
14
23
  t = TrackingNumber.new("1Z879E930346834440")
15
24
  # => #<TrackingNumber::UPS 1Z879E930346834440>
16
-
17
25
  t.valid? #=> true
18
- t.carrier #=> :ups
19
26
  ```
20
- Also can take a block of text and find all the valid tracking numbers within it
27
+
28
+ #### Searching a block of text
29
+ This will return valid tracking numbers contained within a block of text.
21
30
 
22
31
  ```ruby
23
- TrackingNumber.search("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
24
- tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 1Z879E930346834440
25
- nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
26
- aute 9611020987654312345672 dolor in reprehenderit in voluptate velit esse cillum dolore eu
27
- fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
28
- officia deserunt mollit anim id est laborum.")
32
+ TrackingNumber.search("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 1Z879E930346834440 nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 9611020987654312345672 dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.")
29
33
 
30
34
  #=> [#<TrackingNumber::UPS 1Z879E930346834440>, #<TrackingNumber::FedExGround96 9611020987654312345672>]
31
35
  ```
32
36
 
37
+ #### Courier Info
38
+ As of 1.0, the possible courier codes are `[:usps, :fedex, :ups, :ontrac, :dhl, :amazon, :s10, :unknown]`. S10 is the international standard used by local government post offices. When packages are shipped internationally via normal post, it's usually an S10 number.
39
+
40
+ ```ruby
41
+ t = TrackingNumber.new("1Z879E930346834440")
42
+ # => #<TrackingNumber::UPS 1Z879E930346834440>
43
+
44
+ t.valid? #=> true
45
+ t.courier_code #=> :ups
46
+ t.courier_name #=> "UPS"
47
+
48
+
49
+ t = TrackingNumber.new("RB123456785GB")
50
+ t.courier_name #=> "Royal Mail Group plc"
51
+ t.courier_code #=> :s10
52
+
53
+ t = TrackingNumber.new("RB123456785US")
54
+ t.courier_name #=> "United States Postal Service"
55
+ ```
56
+
57
+ #### Service Type
58
+ Some tracking numbers indicate their service type
59
+
60
+ ```ruby
61
+ t = TrackingNumber.new("1Z879E930346834440")
62
+ t.service_type #=> "UPS United States Ground""
63
+
64
+ t = TrackingNumber.new("1ZXX3150YW44070023")
65
+ t.service_type #=> "UPS SurePost - Delivered by the USPS"
66
+
67
+ t = TrackingNumber.new("RB123456785US")
68
+ t.service_type #=> "Letter Post Registered"
69
+ ```
70
+
71
+ #### Shipper ID
72
+ Some tracking numbers indicate information about their package
73
+ ```ruby
74
+ t = TrackingNumber.new("1Z6072AF0320751583")
75
+ t.shipper_id #=> "6072AF" <-- this is Target
76
+ ```
77
+
78
+ #### Destination Zip
79
+ Some tracking numbers indicate their destination
80
+
81
+ ```ruby
82
+ t = TrackingNumber.new("1001901781990001000300617767839437")
83
+ t.destination_zip #=> "10003"
84
+ ```
85
+
86
+ #### Package Info
87
+ Some tracking numbers indicate information about their package
88
+
89
+ ```ruby
90
+ t = TrackingNumber.new("012345000000002")
91
+ t.package_type #=> "case/carton"
92
+ ```
93
+
94
+ #### Tracking URL
95
+ Get the tracking url from the shipper
96
+ ```ruby
97
+ t = TrackingNumber.new("1Z6072AF0320751583")
98
+ t.tracking_url #=> ""https://wwwapps.ups.com/WebTracking/track?track=yes&trackNums=1Z6072AF0320751583"
99
+ ```
100
+
101
+ #### All the info we have
102
+ Get a object of all the info we have on the thing
103
+ ```ruby
104
+ t = TrackingNumber.new("1Z6072AF0320751583")
105
+ t.info #=> @courier=#<TrackingNumber::Info:0x000000010a45fed8 @code=:ups, @name="UPS">,
106
+ # @decode={:serial_number=>"6072AF032075158", :shipper_id=>"6072AF", :service_type=>"03", :package_id=>"2075158", :check_digit=>"3"},
107
+ # @destination_zip=nil,
108
+ # @package_type=nil,
109
+ # @partners=nil,
110
+ # @service_description=nil,
111
+ # @service_type="UPS United States Ground",
112
+ # @shipper_id="6072AF",
113
+ # @tracking_url="https://wwwapps.ups.com/WebTracking/track?track=yes&trackNums=1Z6072AF0320751583">
114
+ ```
115
+
116
+ #### Decoding
117
+ Most tracking numbers have a format where each part of the number has meaning. `decode` splits up the number into its known named parts.
118
+ ```ruby
119
+ t = TrackingNumber.new("1Z879E930346834440")
120
+ t.decode
121
+
122
+ #=> {
123
+ # :serial_number => "879E93034683444",
124
+ # :shipper_id => "879E93",
125
+ # :service_type => "03",
126
+ # :package_id => "4683444",
127
+ # :check_digit => "0"
128
+ # }
129
+ ```
130
+
33
131
  ## ActiveModel validation
34
132
 
35
133
  For Rails 3 (or any ActiveModel client), validate your fields as a tracking number:
@@ -47,7 +145,6 @@ end
47
145
  ```
48
146
 
49
147
  ## Contributing to tracking_number
50
-
51
148
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
52
149
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
53
150
  * Fork the project
@@ -58,5 +155,5 @@ end
58
155
 
59
156
  ## Copyright
60
157
 
61
- Copyright (c) 2010 Jeff Keen. See LICENSE.txt for
158
+ Copyright (c) 2010-2021 Jeff Keen. See LICENSE.txt for
62
159
  further details.
data/Rakefile CHANGED
@@ -1,15 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rubygems'
2
4
  require 'bundler'
3
5
  Bundler::GemHelper.install_tasks
4
6
  require 'rake'
5
7
  require 'rake/testtask'
8
+
6
9
  Rake::TestTask.new(:test) do |test|
7
10
  test.libs << 'lib' << 'test'
8
11
  test.pattern = 'test/**/*_test.rb'
9
12
  test.verbose = true
10
13
  end
11
14
 
12
- task :default => :test
15
+ task default: :test
13
16
 
14
17
  require 'rdoc/task'
15
18
  RDoc::Task.new do |rdoc|
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'tracking_number'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require 'irb'
14
+ IRB.start(__FILE__)