Class: TrackingNumberValidator::FedExGroundValidator
- Inherits:
-
Object
- Object
- TrackingNumberValidator::FedExGroundValidator
- Defined in:
- lib/tracking_number_validator/fed_ex_ground_validator.rb
Constant Summary collapse
- WEIGHTINGS =
[1, 3, 7]
Instance Attribute Summary collapse
-
#tracking_number ⇒ Object
readonly
Returns the value of attribute tracking_number.
Instance Method Summary collapse
-
#initialize(tracking_number) ⇒ FedExGroundValidator
constructor
A new instance of FedExGroundValidator.
- #name ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(tracking_number) ⇒ FedExGroundValidator
Returns a new instance of FedExGroundValidator.
7 8 9 |
# File 'lib/tracking_number_validator/fed_ex_ground_validator.rb', line 7 def initialize(tracking_number) @tracking_number = tracking_number end |
Instance Attribute Details
#tracking_number ⇒ Object (readonly)
Returns the value of attribute tracking_number.
5 6 7 |
# File 'lib/tracking_number_validator/fed_ex_ground_validator.rb', line 5 def tracking_number @tracking_number end |
Instance Method Details
#name ⇒ Object
31 32 33 |
# File 'lib/tracking_number_validator/fed_ex_ground_validator.rb', line 31 def name :fed_ex_ground end |
#valid? ⇒ Boolean
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# 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 |