Module: CardNumberValidator

Defined in:
lib/card_number_validator.rb,
lib/card_number_validator/cards/elo.rb,
lib/card_number_validator/cards/amex.rb,
lib/card_number_validator/cards/visa.rb,
lib/card_number_validator/cards/hiper.rb,
lib/card_number_validator/cards/diners.rb,
lib/card_number_validator/cards/hipercard.rb,
lib/card_number_validator/cards/mastercard.rb

Defined Under Namespace

Modules: Cards

Constant Summary collapse

FLAGS =
%i(
  amex diners elo hiper hipercard mastercard visa
)

Class Method Summary collapse

Class Method Details

.flag(card_number) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/card_number_validator.rb', line 16

def self.flag(card_number)
  card_number = card_number.to_s
  self::FLAGS.each do |flag|
    flag_found = flag_class(flag).send('validate', card_number)
    return flag if flag_found
  end
  :unknown
end

.flag_class(flag) ⇒ Object



35
36
37
38
39
# File 'lib/card_number_validator.rb', line 35

def self.flag_class(flag)
  flag_class = "CardNumberValidator::Cards::#{flag.to_s.capitalize}"
  flag_class = 'CardNumberValidator::Cards::Diners' if flag == :diners
  Kernel.const_get flag_class
end

.generate(flag) ⇒ Object



29
30
31
32
33
# File 'lib/card_number_validator.rb', line 29

def self.generate(flag)
  flag = flag.to_sym
  return unless self::FLAGS.include?(flag)
  flag_class(flag).send('generate')
end

.valid?(card_number) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/card_number_validator.rb', line 25

def self.valid?(card_number)
  flag(card_number) != :unknown
end