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 +4 -4
- data/credit_card_inspector.gemspec +24 -0
- data/lib/credit_card_inspector.rb +41 -0
- data/lib/credit_card_inspector/version.rb +3 -0
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ccc795ea2c546c728736617ea83a074c473c8b2c
|
4
|
+
data.tar.gz: 905085827bbd0ef972000ededc0b0c8440385706
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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.
|
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:
|
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:
|
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
|