credit_card_inspector 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c73227676fcccc167a07ac46c3c6d73e7e38956b
4
- data.tar.gz: 04414bbcfdc23a90271a388f875748aa0a7d0557
3
+ metadata.gz: ccc795ea2c546c728736617ea83a074c473c8b2c
4
+ data.tar.gz: 905085827bbd0ef972000ededc0b0c8440385706
5
5
  SHA512:
6
- metadata.gz: f22cc8ce9bc4a57bfef754187966df153773e41da9d146dbca9391b5b6e72c3ac4741350efa4f5d4b31915e0e035a3830d0b0f1a073532ce9e8ac4e5a0ab66df
7
- data.tar.gz: ac7bf310d66ffd97ad44c3a8a345280e8fae9d36b4948f76a73dfb7d940f6e068838a19091a9ff36be9af67e32ee5804a4b41bf40e9d1666fb0b8da2a8ce047a
6
+ metadata.gz: 5eea0fe4afbbc548772df358c9bb2a711664332558aaf5d8040275864f9d66f3efb0399332cba73eea760885f9a4678b1ff2282a7fc6cd7e12f383a5a0a004a7
7
+ data.tar.gz: 54016180253d664770d642cde6d8db341aac871dd552b223453a3d3dd2ddaa850db0d8e83f2d7d8b3873031cc7c3ab28337de33cdd7dd4d3a8a1d092dd31572b
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'credit_card_inspector/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "credit_card_inspector"
8
+ spec.version = CreditCardInspector::VERSION
9
+ spec.authors = ["Steve Lorek"]
10
+ spec.email = ["steve@stevelorek.com"]
11
+ spec.description = %q{Validates credit cards according to the Luhn algorithm. Also determines the type of card from its number}
12
+ spec.summary = %q{Validate card numbers and determine card type}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ end
@@ -0,0 +1,41 @@
1
+ require "credit_card_inspector/version"
2
+
3
+ module CreditCardInspector
4
+
5
+ def self.card_type(card_number)
6
+
7
+ card_number = sanitise_card_number(card_number)
8
+
9
+ card_validation_rules.each do |card_type, rule|
10
+ return card_type if card_number.match rule
11
+ end
12
+
13
+ return 'Unknown'
14
+ end
15
+
16
+ def self.valid?(card_number)
17
+ digits = sanitise_card_number(card_number).chars.collect(&:to_i).reverse
18
+
19
+ total = digits.each_slice(2).map do |x, y|
20
+ y ||= 0
21
+ [x, (y * 2).divmod(10)]
22
+ end.flatten.inject(:+)
23
+
24
+ total % 10 == 0
25
+ end
26
+
27
+ def self.sanitise_card_number(card_number)
28
+ card_number.to_s.gsub /[^0-9]/, ''
29
+ end
30
+
31
+
32
+ private
33
+ def self.card_validation_rules
34
+ {
35
+ 'AMEX' => /^(34|37)\d{13}$/,
36
+ 'Discover' => /^6011\d{12}$/,
37
+ 'MasterCard' => /^5[1-5]\d{14}$/,
38
+ 'VISA' => /^4\d{12}(\d{3})?$/
39
+ }
40
+ end
41
+ end
@@ -0,0 +1,3 @@
1
+ module CreditCardInspector
2
+ VERSION = "0.0.2"
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: credit_card_inspector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Lorek
@@ -52,7 +52,8 @@ dependencies:
52
52
  - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- description: Credit Card Inspector
55
+ description: Validates credit cards according to the Luhn algorithm. Also determines
56
+ the type of card from its number
56
57
  email:
57
58
  - steve@stevelorek.com
58
59
  executables: []
@@ -66,6 +67,9 @@ files:
66
67
  - LICENSE.txt
67
68
  - README.md
68
69
  - Rakefile
70
+ - credit_card_inspector.gemspec
71
+ - lib/credit_card_inspector.rb
72
+ - lib/credit_card_inspector/version.rb
69
73
  - spec/credit_card_validator_spec.rb
70
74
  - spec/spec_helper.rb
71
75
  homepage: ''
@@ -91,8 +95,7 @@ rubyforge_project:
91
95
  rubygems_version: 2.0.0
92
96
  signing_key:
93
97
  specification_version: 4
94
- summary: Validates credit cards according to the Luhn algorithm. Also determines the
95
- type of card from its number
98
+ summary: Validate card numbers and determine card type
96
99
  test_files:
97
100
  - spec/credit_card_validator_spec.rb
98
101
  - spec/spec_helper.rb