Class: TrackingNumber::USPS13

Inherits:
USPS
  • Object
show all
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

#carrier

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

#matchesObject



122
123
124
# File 'lib/tracking_number/usps.rb', line 122

def matches
  self.tracking_number.scan(VERIFY_PATTERN).flatten
end

#valid_checksum?Boolean

Returns:

  • (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