Module: Credy::CreditCard

Extended by:
CreditCard
Included in:
CreditCard
Defined in:
lib/credy.rb

Instance Method Summary collapse

Instance Method Details

#generate(options = {}) ⇒ Object

Generate a credit card number



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

def generate(options = {})
  rule   = find_rule(options) || return
  number = generate_from_rule(rule)

  {
    number:  number,
    type:    rule[:type],
    country: rule[:country]
  }
end

#infos(number) ⇒ Object

Returns information about a number



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/credy.rb', line 27

def infos(number)
  rules = Rules.all.select do |rule|
    valid = true

    # Check number of digits
    lengths = rule[:length].is_a?(Array) ? rule[:length] : [rule[:length]]
    valid = false unless lengths.include? number.length

    # Check prefix
    valid = false unless !(number =~ Regexp.new("^#{rule[:prefix]}")).nil?
    valid
  end

  if rules
    rules[0]
  else
    nil
  end
end

#validate(number) ⇒ Object

Validates a number



48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/credy.rb', line 48

def validate(number)
  criterii = {}
  criterii[:luhn] = Check.luhn number
  criterii[:type] = !!infos(number)

  valid = criterii.all? { |_, v| v == true }

  {
    valid: valid,
    details: criterii
  }
end