class CreditCardDetector::Rule

Public Class Methods

new(length:, prefixes:) click to toggle source
# File lib/credit_card_detector/rule.rb, line 3
def initialize(length:, prefixes:)
  @length = length
  @regexp = compile_regexp(prefixes)
end

Public Instance Methods

matches?(number) click to toggle source
# File lib/credit_card_detector/rule.rb, line 8
def matches?(number)
  matches_length?(number.to_s) && matches_prefix?(number.to_s)
end
matches_length?(number) click to toggle source
# File lib/credit_card_detector/rule.rb, line 12
def matches_length?(number)
  @length.include? number.size
end
matches_prefix?(number) click to toggle source
# File lib/credit_card_detector/rule.rb, line 16
def matches_prefix?(number)
  !!(number =~ @regexp)
end

Private Instance Methods

compile_regexp(prefixes) click to toggle source
# File lib/credit_card_detector/rule.rb, line 22
def compile_regexp(prefixes)
  Regexp.new("^(#{prefixes.join("|")})")
end