Sha256: a9074921f1cfad2c3dcddb50e826b7419f6a82d971a9d1cbda98d918d1705646

Contents?: true

Size: 516 Bytes

Versions: 1

Compression:

Stored size: 516 Bytes

Contents

require "credit_card_detector/rule"

module CreditCardDetector
  class Brand
    attr_reader :id, :name, :options

    def initialize(id, data)
      @id = id
      @name = data.fetch(:name)
      @raw_rules = data.fetch(:rules)
      @options = data.fetch(:options, {})
    end

    def matches?(number)
      rules.any? { |rule| rule.matches? number }
    end

    def luhn?
      !@options.fetch(:skip_luhn, false)
    end

    def rules
      @rules ||= @raw_rules.map { |rule| Rule.new rule }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
credit_card_detector-0.3 lib/credit_card_detector/brand.rb