credit_card_inspector 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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