Class: CreditCardValidator::Validator
- Inherits:
-
Object
- Object
- CreditCardValidator::Validator
- Defined in:
- lib/credit_card_validator/validator.rb
Class Method Summary collapse
- .card_type(number) ⇒ Object
- .is_allowed_card_type?(number) ⇒ Boolean
- .is_test_number(number) ⇒ Object
- .options ⇒ Object
- .valid?(number) ⇒ Boolean
- .verify_luhn(number) ⇒ Object
Class Method Details
.card_type(number) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/credit_card_validator/validator.rb', line 30 def card_type(number) CARD_TYPES.keys.each do |t| return t.to_s if card_is(t, number) end nil end |
.is_allowed_card_type?(number) ⇒ Boolean
37 38 39 40 41 42 43 44 |
# File 'lib/credit_card_validator/validator.rb', line 37 def is_allowed_card_type?(number) card_type = card_type(number) if [:allowed_card_types] and [:allowed_card_types].respond_to?('include?') [:allowed_card_types].include?(card_type.to_sym) else !card_type.nil? end end |
.is_test_number(number) ⇒ Object
46 47 48 |
# File 'lib/credit_card_validator/validator.rb', line 46 def is_test_number(number) TEST_NUMBERS.include?(strip(number)) end |
.options ⇒ Object
26 27 28 |
# File 'lib/credit_card_validator/validator.rb', line 26 def @@options ||= {} end |
.valid?(number) ⇒ Boolean
19 20 21 22 23 24 |
# File 'lib/credit_card_validator/validator.rb', line 19 def valid?(number) is_allowed_card_type?(number) and verify_luhn(number) and card_type(number) and ([:test_numbers_are_valid] ? true : !is_test_number(number)) end |
.verify_luhn(number) ⇒ Object
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/credit_card_validator/validator.rb', line 50 def verify_luhn(number) total = strip(number).reverse().split(//).inject([0,0]) do |accum,n| n = n.to_i accum[0] += (accum[1] % 2 == 1 ? rotate(n * 2) : n) accum[1] += 1 accum end (total[0] % 10 == 0) end |