class TrackingNumberValidator::FedExGroundValidator
Constants
- WEIGHTINGS
Attributes
tracking_number[R]
Public Class Methods
new(tracking_number)
click to toggle source
# File lib/tracking_number_validator/fed_ex_ground_validator.rb, line 7 def initialize(tracking_number) @tracking_number = tracking_number end
Public Instance Methods
name()
click to toggle source
# File lib/tracking_number_validator/fed_ex_ground_validator.rb, line 31 def name :fed_ex_ground end
valid?()
click to toggle source
# File lib/tracking_number_validator/fed_ex_ground_validator.rb, line 11 def valid? return false unless valid_length? reversed = tracking_number.reverse[1...14] return false unless reversed.end_with? "00" reversed = reversed[0..-3] original_check_digit = tracking_number.chars.last.to_i sum = 0 reversed.chars.each_with_index do |char, i| sum += WEIGHTINGS[(i) % WEIGHTINGS.size] * char.to_i end check_digit = (sum % 11) % 10 original_check_digit == check_digit end
Private Instance Methods
valid_length?()
click to toggle source
# File lib/tracking_number_validator/fed_ex_ground_validator.rb, line 37 def valid_length? tracking_number.length >= 15 end