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.
- checksums.yaml +5 -5
- data/.github/FUNDING.yml +2 -0
- data/.github/dependabot.yml +22 -0
- data/.github/workflows/release.yml +36 -0
- data/.github/workflows/ruby.yml +35 -0
- data/.gitmodules +3 -0
- data/.tool-versions +1 -0
- data/CHANGELOG.md +318 -0
- data/Gemfile +4 -2
- data/README.md +112 -15
- data/Rakefile +4 -1
- data/bin/console +14 -0
- data/lib/data/couriers/amazon.json +45 -0
- data/lib/data/couriers/canadapost.json +33 -0
- data/lib/data/couriers/canpar.json +29 -0
- data/lib/data/couriers/dhl.json +97 -0
- data/lib/data/couriers/dpd.json +345 -0
- data/lib/data/couriers/fedex.json +291 -0
- data/lib/data/couriers/gofo.json +24 -0
- data/lib/data/couriers/landmark.json +26 -0
- data/lib/data/couriers/lasership.json +105 -0
- data/lib/data/couriers/old_dominion.json +65 -0
- data/lib/data/couriers/ontrac.json +74 -0
- data/lib/data/couriers/purolator.json +50 -0
- data/lib/data/couriers/s10.json +1443 -0
- data/lib/data/couriers/speedee.json +26 -0
- data/lib/data/couriers/ups.json +197 -0
- data/lib/data/couriers/usps.json +272 -0
- data/lib/data/couriers/yodel.json +29 -0
- data/lib/data/couriers/yunexpress.json +25 -0
- data/lib/tracking_number/active_model_validator.rb +1 -1
- data/lib/tracking_number/base.rb +291 -22
- data/lib/tracking_number/checksum_validations.rb +119 -0
- data/lib/tracking_number/info.rb +26 -0
- data/lib/tracking_number/loader.rb +82 -0
- data/lib/tracking_number/partnership.rb +7 -0
- data/lib/tracking_number/unknown.rb +45 -0
- data/lib/tracking_number/version.rb +1 -1
- data/lib/tracking_number.rb +69 -17
- data/package.json +77 -0
- data/test/partnership_test.rb +71 -0
- data/test/renamed_types_test.rb +44 -0
- data/test/test_helper.rb +14 -7
- data/test/tracking_number_meta_test.rb +145 -0
- data/test/tracking_number_test.rb +191 -0
- data/tracking_number.gemspec +53 -22
- data/yarn.lock +3425 -0
- metadata +131 -46
- data/.travis.yml +0 -12
- data/VERSION +0 -1
- data/lib/tracking_number/dhl.rb +0 -34
- data/lib/tracking_number/fedex.rb +0 -156
- data/lib/tracking_number/ontrac.rb +0 -34
- data/lib/tracking_number/ups.rb +0 -108
- data/lib/tracking_number/usps.rb +0 -166
- data/test/dhl_tracking_number_test.rb +0 -35
- data/test/fedex_tracking_number_test.rb +0 -75
- data/test/ontrac_tracking_number_test.rb +0 -24
- data/test/ups_tracking_number_test.rb +0 -36
- data/test/usps_tracking_number_test.rb +0 -73
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 71f01e80c118f12c210f3c9a5195edf0c9d257c37ff4ce36529962f4131a57ed
|
|
4
|
+
data.tar.gz: 79519ddef14f7728eb6de46437360a9040368e261ce3dba4cdadf9a9b382891e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 86ef4bdd51d50a76f26b0bc53f17db5518c48973ecc715b90058dc446c1a7ac2558db35a75f9a572837e4aacbf9e6fa33b2c5870dfc21076a50a8c538e156313
|
|
7
|
+
data.tar.gz: f78a9a8b106ce172f87f231c9d59aa6c52a1f76b8a6b471aaa5a17ac92ee605d71cab5d216b3032d3eba8fd0244a406f6358f6be465e1332c1edce32d07c9ad8
|
data/.github/FUNDING.yml
ADDED
|
@@ -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
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
data/README.md
CHANGED
|
@@ -1,35 +1,133 @@
|
|
|
1
|
-
|
|
1
|
+
[](https://github.com/jkeen/tracking_number/actions/workflows/ruby.yml)
|
|
2
|
+
[](https://badge.fury.io/rb/tracking_number)
|
|
3
|
+
[]()
|
|
2
4
|
|
|
3
|
-
|
|
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
|
-
|
|
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 :
|
|
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__)
|