pan_masker 0.0.1

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.
data/bin/pan_masker ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'pan_masker'
4
+ puts Pan_masker.mask(ARGV[0])
@@ -0,0 +1,22 @@
1
+ class Pan_masker::Finder
2
+ def self.find_and_mask_pan(data)
3
+ extractedPans = data.scan(/[\d][0-9]{18}|[\d][0-9]{15}/)
4
+
5
+ if extractedPans.any?
6
+ arrayLength = extractedPans.count
7
+ count = 0
8
+ begin
9
+ currentPan = extractedPans[count]
10
+ maskedPan = Masker.mask_pan(currentPan)
11
+ data = data.gsub(currentPan, maskedPan)
12
+ count += 1
13
+ end while count < arrayLength
14
+ data
15
+ else
16
+ data
17
+ end
18
+ end
19
+ end
20
+
21
+ require 'pan_masker/masker'
22
+
@@ -0,0 +1,18 @@
1
+ class Pan_masker::Finder::Masker
2
+ def self.mask_pan(pan)
3
+ panLenght = pan.length
4
+ firstSix = pan[0..5]
5
+ lastFour = pan[panLenght-4..panLenght]
6
+
7
+ panLenghtToBeMasked = panLenght - 10
8
+ count = 1
9
+ mask = '*'
10
+ begin
11
+ mask = mask + '*'
12
+ count += 1
13
+ end while count < panLenghtToBeMasked
14
+ maskedPan = firstSix + mask + lastFour
15
+ maskedPan
16
+ end
17
+ end
18
+
data/lib/pan_masker.rb ADDED
@@ -0,0 +1,8 @@
1
+ class Pan_masker
2
+ def self.mask(data)
3
+ maskedData = Finder.find_and_mask_pan(data)
4
+ maskedData
5
+ end
6
+ end
7
+
8
+ require 'pan_masker/finder'
@@ -0,0 +1,16 @@
1
+ require 'test/unit'
2
+ require 'pan_masker'
3
+
4
+ class PanMaskerTest < Test::Unit::TestCase
5
+ def test_no_pan
6
+ assert_equal "the is no pan in this string", Pan_masker.mask("the is no pan in this string")
7
+ end
8
+
9
+ def test_mastercard_and_visa_pans
10
+ assert_equal "mastercard and visa 16 111111******1111", Pan_masker.mask("mastercard and visa 16 1111111111111111")
11
+ end
12
+
13
+ def test_verve_pans
14
+ assert_equal "verve 19 111111*********1111", Pan_masker.mask("verve 19 1111111111111111111")
15
+ end
16
+ end
metadata ADDED
@@ -0,0 +1,52 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pan_masker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Mayowa Anibaba
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-02-03 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: A simple gem to scan a string, find and mask mastercard, visa and verve credit card pans
15
+ email: me@codegidi.com
16
+ executables:
17
+ - pan_masker
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/pan_masker.rb
22
+ - lib/pan_masker/masker.rb
23
+ - lib/pan_masker/finder.rb
24
+ - bin/pan_masker
25
+ - test/test_pan_masker.rb
26
+ homepage: http://rubygems.org/gems/pan_masker
27
+ licenses:
28
+ - MIT
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ none: false
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ none: false
45
+ requirements: []
46
+ rubyforge_project:
47
+ rubygems_version: 1.8.24
48
+ signing_key:
49
+ specification_version: 3
50
+ summary: Pan masker
51
+ test_files:
52
+ - test/test_pan_masker.rb