Module: Heatwave::TrackingNumber
- Defined in:
- app/lib/heatwave/tracking_number.rb,
app/lib/heatwave/tracking_number/spec.rb,
app/lib/heatwave/tracking_number/result.rb,
app/lib/heatwave/tracking_number/catalog.rb,
app/lib/heatwave/tracking_number/checksums.rb
Overview
Tracking number parsing, detection, and validation.
Defined Under Namespace
Modules: Checksums Classes: Catalog, Result, Spec
Class Method Summary collapse
-
.detect_all(value) ⇒ Array<Result>
Every spec that validates the number.
-
.parse(value) ⇒ Result
Parse a single number.
-
.specs_for(courier_code) ⇒ Array<Spec>
Barcode families for one courier_code (
:ups,:canpar, …). - .valid_for?(courier_code, value) ⇒ Boolean
Class Method Details
.detect_all(value) ⇒ Array<Result>
Every spec that validates the number. Used when two couriers share a
checksum (Purolator 520-prefix vs FedEx).
27 |
# File 'app/lib/heatwave/tracking_number.rb', line 27 def detect_all(value) = Catalog.instance.matches(value) |
.parse(value) ⇒ Result
Parse a single number. Unmatched input still returns a Result with
valid? == false so callers can branch on the predicate.
20 |
# File 'app/lib/heatwave/tracking_number.rb', line 20 def parse(value) = Catalog.instance.match(value) |
.specs_for(courier_code) ⇒ Array<Spec>
Barcode families for one courier_code (:ups, :canpar, …).
33 |
# File 'app/lib/heatwave/tracking_number.rb', line 33 def specs_for(courier_code) = Catalog.instance.specs_for(courier_code) |
.valid_for?(courier_code, value) ⇒ Boolean
38 39 40 |
# File 'app/lib/heatwave/tracking_number.rb', line 38 def valid_for?(courier_code, value) specs_for(courier_code).any? { |spec| spec.valid?(value) } end |