Class: TrackingNumber::USPS13
- Defined in:
- lib/tracking_number/usps.rb
Constant Summary collapse
- SEARCH_PATTERN =
/(\b([A-Z]\s*){2,2}([0-9]\s*){9,9}([A-Z]\s*){2,2}\b)/
- VERIFY_PATTERN =
/^([A-Z]{2,2})([0-9]{9,9})([A-Z]{2,2})$/
Instance Attribute Summary
Attributes inherited from Base
#original_number, #tracking_number
Instance Method Summary collapse
Methods inherited from USPS
Methods inherited from Base
#decode, #initialize, #inspect, scan, search, #to_s, #valid?, #valid_format?
Constructor Details
This class inherits a constructor from TrackingNumber::Base
Instance Method Details
#matches ⇒ Object
122 123 124 |
# File 'lib/tracking_number/usps.rb', line 122 def matches self.tracking_number.scan(VERIFY_PATTERN).flatten end |
#valid_checksum? ⇒ Boolean
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/tracking_number/usps.rb', line 126 def valid_checksum? sequence = tracking_number.scan(/[0-9]+/).flatten.join chars = sequence.chars.to_a check_digit = chars.pop.to_i sum = 0 chars.zip([8,6,4,2,3,5,9,7]).each do |pair| sum += (pair[0].to_i * pair[1].to_i) end remainder = sum % 11 check = case remainder when 1 0 when 0 5 else 11 - remainder end return check == check_digit end |