Class: TrackingNumber::FedExGround18
- Defined in:
- lib/tracking_number/fedex.rb
Constant Summary collapse
- SEARCH_PATTERN =
/(\b([0-9]\s*){18,18}\b)/
- VERIFY_PATTERN =
/^[0-9]{2,2}([0-9]{15,15})([0-9])$/
- LENGTH =
20
Instance Attribute Summary
Attributes inherited from Base
#original_number, #tracking_number
Instance Method Summary collapse
Methods inherited from FedEx
Methods inherited from Base
#initialize, #inspect, scan, search, #to_s, #valid?, #valid_format?
Constructor Details
This class inherits a constructor from TrackingNumber::Base
Instance Method Details
#decode ⇒ Object
104 105 106 107 108 109 110 111 112 |
# File 'lib/tracking_number/fedex.rb', line 104 def decode {:application_id => self.tracking_number.to_s.slice(0...2), :serial_container => self.tracking_number.to_s.slice(1...2), :service_code => self.tracking_number.to_s.slice(2...3), :shipper_id => self.tracking_number.to_s.slice(3...10), :package_identifier => self.tracking_number.to_s.slice(10...17), :check_digit => self.tracking_number.slice(17...18) } end |
#matches ⇒ Object
100 101 102 |
# File 'lib/tracking_number/fedex.rb', line 100 def matches self.tracking_number.scan(VERIFY_PATTERN).flatten end |
#valid_checksum? ⇒ Boolean
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/tracking_number/fedex.rb', line 114 def valid_checksum? # [0-9]{2,2} - Not used # [0-9]{15, 15} - used for calculation sequence = tracking_number.chars.to_a.map(&:to_i) check_digit = sequence.pop total = 0 sequence.reverse.each_with_index do |x, i| x *= 3 if i.even? total += x end check = total % 10 check = (10 - check) unless (check.zero?) return true if check == check_digit.to_i end |