cc_manager 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in cc_manager.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Credit Card Manager
2
+
3
+ Managing Credit card processing with ease via command line app with file input.
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
data/bin/ccmgr ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ENV['BUNDLE_GEMFILE'] = File.expand_path('../../Gemfile', __FILE__)
4
+ require 'rubygems' unless defined?(Gem)
5
+ require 'bundler/setup'
6
+
7
+ lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
8
+ $LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
9
+
10
+ require 'cc_manager/cli'
11
+ CcManager::CLI.start
@@ -0,0 +1,59 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "cc_manager/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "cc_manager"
7
+ s.version = CcManager::VERSION
8
+ s.authors = ["Manish Lal Das"]
9
+ s.email = ["manishlaldas.md@gmail.com"]
10
+ s.homepage = "http://manishdas.github.com/cc_manager"
11
+ s.summary = %q{Credit card processing}
12
+ s.description = %q{Managing Credit card processing with ease via command line app with file input}
13
+
14
+ s.rubyforge_project = "cc_manager"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = ["ccmgr"]
19
+ s.require_paths = ["lib"]
20
+
21
+
22
+ s.post_install_message =<<EOF
23
+
24
+ ********************************************************************************
25
+
26
+ Process credit card information with ease
27
+ using CLI and file as input
28
+
29
+ # cc_details.txt
30
+ Add Tom 4111111111111111 $1000
31
+ Add Lisa 5454545454545454 $3000
32
+ Add Quincy 1234567890123456 $2000
33
+ Charge Tom $500
34
+ Charge Tom $800
35
+ Charge Lisa $7
36
+ Credit Lisa $100
37
+ Credit Quincy $200
38
+
39
+ > ccmgr cc_details.txt
40
+
41
+ Output:
42
+
43
+ Lisa: $-93
44
+ Quincy: error
45
+ Tom: $500
46
+
47
+ ********************************************************************************
48
+
49
+ EOF
50
+
51
+ s.add_dependency "thor", "~> 0.14"
52
+ s.add_dependency "terminal-table", "~> 1.4"
53
+
54
+ s.add_development_dependency "aruba"
55
+ s.add_development_dependency "rspec", '~>2.6.0'
56
+ s.add_development_dependency "bundler", "~> 1.0.0"
57
+ s.add_development_dependency "pry"
58
+ s.add_development_dependency "pry-doc"
59
+ end
@@ -0,0 +1,21 @@
1
+ Feature: CLI Process
2
+ In order to process all the credit card actions
3
+ As a CLI user
4
+ I want to get final output with error message for Invalid File Location in CLI
5
+
6
+
7
+ @announce, @moderate_slow_process
8
+ Scenario: Invalid file Location
9
+ Given a file named "billings.txt" with:
10
+ """
11
+ Add Tom 4111111111111111 $1000 Chicago
12
+ Add Lisa 5454545454545454 $3000
13
+ Charge Tom $500
14
+ Charge Lisa $7
15
+ Credit Lisa $100
16
+ """
17
+ When I run `ccmgr -f billings_invalid.txt`
18
+ Then the output should contain:
19
+ """
20
+ Invalid File location. Please Enter Valid path of File!!!
21
+ """
@@ -0,0 +1,74 @@
1
+ Feature: CLI Process
2
+ In order to process all the credit card actions
3
+ As a CLI user
4
+ I want to get final output with error messages in CLI
5
+
6
+ @announce, @moderate_slow_process
7
+ Scenario: file with given actions
8
+ Given a file named "billings.txt" with:
9
+ """
10
+ Add Tom 4111111111111111 $1000
11
+ Add Lisa 5454545454545454 $3000
12
+ Add Quincy 1234567890123456 $2000
13
+ Charge Tom $500
14
+ Charge Tom $800
15
+ Charge Lisa $7
16
+ Credit Lisa $100
17
+ Credit Quincy $200
18
+ """
19
+ When I run `ccmgr -f billings.txt`
20
+ Then the output should match:
21
+ """
22
+ Tom: $500
23
+ Lisa: $-93
24
+ Quincy: Error
25
+
26
+ List of Errors:
27
+ +------------------+------------------------------------------------------------+
28
+ | File Line Number | Error Message |
29
+ +------------------+------------------------------------------------------------+
30
+ | Line Number: 3 | Cannot Add Credit because Invalid Account!!! |
31
+ | Line Number: 5 | Cannot Charge because Charged Amount exceeded the limit!!! |
32
+ | Line Number: 8 | Cannot Add Credit because Invalid Account!!! |
33
+ +------------------+------------------------------------------------------------+
34
+ """
35
+
36
+ @announce, @moderate_slow_process
37
+ Scenario: file with given actions and without errors
38
+ Given a file named "billings.txt" with:
39
+ """
40
+ Add Tom 4111111111111111 $1000
41
+ Add Lisa 5454545454545454 $3000
42
+ Charge Tom $500
43
+ Charge Lisa $7
44
+ Credit Lisa $100
45
+ """
46
+ When I run `ccmgr -f billings.txt`
47
+ Then the output should contain:
48
+ """
49
+ Tom: $500
50
+ Lisa: $-93
51
+ """
52
+
53
+ @announce, @moderate_slow_process
54
+ Scenario: file with given actions but with invalid arguments
55
+ Given a file named "billings.txt" with:
56
+ """
57
+ Add Tom 4111111111111111 $1000 Chicago
58
+ Add Lisa 5454545454545454 $3000
59
+ Charge Tom $500
60
+ Charge Lisa $7
61
+ Credit Lisa $100
62
+ """
63
+ When I run `ccmgr -f billings.txt`
64
+ Then the output should contain:
65
+ """
66
+ Lisa: $-93
67
+
68
+ List of Errors:
69
+ +------------------+-----------------------+
70
+ | File Line Number | Error Message |
71
+ +------------------+-----------------------+
72
+ | Line Number: 1 | Invalid Input Line!!! |
73
+ +------------------+-----------------------+
74
+ """
@@ -0,0 +1,18 @@
1
+ require 'aruba/cucumber'
2
+ require 'cc_manager'
3
+ ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
4
+
5
+ Before('@slow_process') do
6
+ @aruba_io_wait_seconds = 5
7
+ @aruba_timeout_seconds = 5
8
+ end
9
+
10
+ Before('@moderate_slow_process') do
11
+ @aruba_io_wait_seconds = 2
12
+ @aruba_timeout_seconds = 2
13
+ end
14
+
15
+ Before('@too_slow_process') do
16
+ @aruba_io_wait_seconds = 4
17
+ @aruba_timeout_seconds = 50
18
+ end
@@ -0,0 +1,12 @@
1
+ Feature: CLI Process
2
+ In order to see the version of the gem
3
+ As a CLI user
4
+ I want to get version in CLI
5
+
6
+ @announce, @moderate_slow_process
7
+ Scenario: execute version method in CLI
8
+ When I run `ccmgr -v`
9
+ Then the output should match:
10
+ """
11
+ Version: 0.0.1
12
+ """
@@ -0,0 +1,75 @@
1
+ module CcManager
2
+ class Account
3
+ # Contains Error message if any
4
+ attr_accessor :name, :cc_number, :limit, :balance, :errors, :valid_account
5
+
6
+ def initialize(name, cc_number, limit)
7
+ @errors = []
8
+ @valid_account = false
9
+ @name = name
10
+ @balance = "$0"
11
+ valid_amount?(limit) ? @limit = limit : @errors << "Invalid Amount specified for limit!!!"
12
+ valid_card?(cc_number) ? @cc_number = cc_number : @errors << "#{name}'s account could not be added because Credit Card is invalid!!!"
13
+ @valid_account = true if @errors.count == 0
14
+ end
15
+
16
+ def charge(charged_amount)
17
+ if valid_account?
18
+ if valid_amount?(charged_amount)
19
+ limit_val = get_amount_in_integer(self.limit)
20
+ charged_amount_val = get_amount_in_integer(charged_amount)
21
+ balance = get_amount_in_integer(self.balance)
22
+ if charged_amount_val+balance < limit_val
23
+ self.balance = get_amount_in_string(balance + charged_amount_val)
24
+ else
25
+ @errors << "Cannot Charge because Charged Amount exceeded the limit!!!"
26
+ end
27
+ else
28
+ @errors << "Cannot Charge because Invalid Amount!!!"
29
+ end
30
+ else
31
+ @errors << "Cannot Charge because Invalid Account!!!"
32
+ end
33
+ end
34
+
35
+ def credit(credited_amount)
36
+ if valid_account?
37
+ if valid_amount?(credited_amount)
38
+ balance = get_amount_in_integer(self.balance)
39
+ credited_amount_val = get_amount_in_integer(credited_amount)
40
+ self.balance = get_amount_in_string(balance - credited_amount_val)
41
+ else
42
+ @errors << "Cannot Add Credit because Invalid Amount!!!"
43
+ end
44
+ else
45
+ @errors << "Cannot Add Credit because Invalid Account!!!"
46
+ end
47
+ end
48
+
49
+ private
50
+ def valid_account?
51
+ @valid_account
52
+ end
53
+
54
+ def valid_amount?(amount)
55
+ amount =~ /\A\$\d+\z/
56
+ end
57
+
58
+ def get_amount_in_integer(string_val)
59
+ string_val.split("$").last.to_i
60
+ end
61
+
62
+ def get_amount_in_string(integer_val)
63
+ "$" + integer_val.to_s
64
+ end
65
+
66
+ def valid_card?(number)
67
+ digits = ''
68
+ number.split('').reverse.each_with_index do |d,i|
69
+ digits += d if i%2 == 0
70
+ digits += (d.to_i*2).to_s if i%2 == 1
71
+ end
72
+ digits.split('').inject(0){|sum,d| sum+d.to_i}%10 == 0
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,99 @@
1
+ require 'fileutils'
2
+ require 'thor'
3
+ require 'terminal-table/import'
4
+
5
+ require File.expand_path('../../cc_manager', __FILE__) #=> requiring the gem
6
+
7
+ module CcManager # :nodoc: all
8
+ class CLI < Thor # :nodoc: all
9
+ include Thor::Actions
10
+
11
+ default_task :process
12
+
13
+ map "-v" => :version
14
+
15
+ desc "version", "Shows the current version of cloudfactory gem"
16
+ def version
17
+ say("Version: #{CcManager::VERSION}", :green)
18
+ end
19
+
20
+ desc "process", "heart of this gem"
21
+ method_option :file, :required => true, :aliases => '-f', :type => :string
22
+ def process
23
+ file = options['file']
24
+ accounts = []
25
+ errors = []
26
+ counter = 1
27
+ if File.exist?(file)
28
+ File.open(file, "r") do |infile|
29
+ while (line = infile.gets)
30
+ args = line.split(" ")
31
+ action = args.first
32
+ case(action)
33
+ when "Add"
34
+ if args.count == 4
35
+ name = args[1]
36
+ card_number = args[2]
37
+ limit_amount = args[3]
38
+ account = CcManager::Account.new(name, card_number, limit_amount)
39
+ accounts << account
40
+ errors << {:line_number => counter, :message => account.errors} if account.errors.count > 0
41
+ else
42
+ errors << {:line_number => counter, :message => ["Invalid Input Line!!!"]}
43
+ end
44
+ when "Charge"
45
+ if args.count == 3
46
+ if accounts.count > 0
47
+ name_to_charge = args[1]
48
+ amount_to_charge = args[2]
49
+ accounts.each do |account|
50
+ if account.name == name_to_charge
51
+ charge = account.charge(amount_to_charge)
52
+ errors << {:line_number => counter, :message => charge} if charge.class == Array
53
+ end
54
+ end
55
+ end
56
+ end
57
+ when "Credit"
58
+ if args.count == 3
59
+ if accounts.count > 0
60
+ name_for_credit = args[1]
61
+ amount_for_credit = args[2]
62
+ accounts.each do |account|
63
+ if account.name == name_for_credit
64
+ credit = account.credit(amount_for_credit)
65
+ errors << {:line_number => counter, :message => credit} if credit.class == Array
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ counter = counter + 1
72
+ end
73
+ end
74
+ else
75
+ say("Invalid File location. Please Enter Valid path of File!!!", :red)
76
+ end
77
+
78
+ accounts.each do |a|
79
+ if a.cc_number.nil?
80
+ say("#{a.name}: Error", :red)
81
+ else
82
+ say("#{a.name}: #{a.balance}", :green)
83
+ end
84
+ end
85
+
86
+ if errors.count > 0
87
+ say("\nList of Errors:", :yellow)
88
+ require 'terminal-table'
89
+ error_table = table do |t|
90
+ t.headings = ["File Line Number", 'Error Message']
91
+ errors.each do |error|
92
+ t << ["Line Number: #{error[:line_number]}", error[:message].last]
93
+ end
94
+ end
95
+ say(error_table, :red)
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,3 @@
1
+ module CcManager
2
+ VERSION = "0.0.1"
3
+ end
data/lib/cc_manager.rb ADDED
@@ -0,0 +1,9 @@
1
+ require "cc_manager/version"
2
+
3
+ directory = File.expand_path(File.dirname(__FILE__))
4
+
5
+ module CcManager
6
+ # Your code goes here...
7
+ end
8
+
9
+ require "#{directory}/cc_manager/account"
data/spec/add_spec.rb ADDED
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe CcManager::Account do
4
+ context "Add new account without any errors, " do
5
+ it "having valid credit card number" do
6
+ account = CcManager::Account.new("Tom", "4111111111111111", "$1000")
7
+ account.name.should eql("Tom")
8
+ account.cc_number.should eql("4111111111111111")
9
+ account.limit.should eql("$1000")
10
+ account.balance.should eql("$0")
11
+ account.errors.should be_empty
12
+ account.valid_account.should be_true
13
+ end
14
+ end
15
+
16
+ context "Add new account containing errors, " do
17
+ it "with invalid credit card number" do
18
+ account = CcManager::Account.new("Quincy", "1234567890123456", "$1000")
19
+ account.name.should eql("Quincy")
20
+ account.limit.should eql("$1000")
21
+ account.cc_number.should_not eql("1234567890123456")
22
+ account.balance.should eql("$0")
23
+ account.errors.should include("Quincy's account could not be added because Credit Card is invalid!!!")
24
+ account.valid_account.should_not be_true
25
+ end
26
+
27
+ it "with invalid credit card i.e. having alpha-numeric values" do
28
+ account = CcManager::Account.new("Tom", "123d56h890t23456", "$1000")
29
+ account.name.should eql("Tom")
30
+ account.balance.should eql("$0")
31
+ account.limit.should eql("$1000")
32
+ account.cc_number.should_not eql("123d56h890t23456")
33
+ account.cc_number.should be_nil
34
+ account.errors.should include("Tom's account could not be added because Credit Card is invalid!!!")
35
+ account.valid_account.should_not be_true
36
+ end
37
+
38
+ it "with invalid limit value" do
39
+ account = CcManager::Account.new("Tom", "1234567890123456", "1000")
40
+ account.name.should eql("Tom")
41
+ account.balance.should eql("$0")
42
+ account.limit.should be_nil
43
+ account.cc_number.should_not eql("1234567890123456")
44
+ account.cc_number.should be_nil
45
+ account.errors.should include("Invalid Amount specified for limit!!!")
46
+ account.valid_account.should_not be_true
47
+ end
48
+
49
+ it "with limit value in decimal" do
50
+ account = CcManager::Account.new("Tom", "1234567890123456", "$1000.25")
51
+ account.name.should eql("Tom")
52
+ account.balance.should eql("$0")
53
+ account.limit.should be_nil
54
+ account.cc_number.should_not eql("1234567890123456")
55
+ account.cc_number.should be_nil
56
+ account.errors.should include("Invalid Amount specified for limit!!!")
57
+ account.valid_account.should_not be_true
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,77 @@
1
+ require 'spec_helper'
2
+
3
+ describe CcManager::Account do
4
+ context "Charging for valid account without any errors, " do
5
+ it "having valid credit card number and charging amount is less than the limit of the account" do
6
+ account = CcManager::Account.new("Tom", "4111111111111111", "$1000")
7
+ account.name.should eql("Tom")
8
+ account.cc_number.should eql("4111111111111111")
9
+ account.limit.should eql("$1000")
10
+ account.balance.should eql("$0")
11
+ account.errors.should eql([])
12
+ account.valid_account.should eql(true)
13
+
14
+ account.charge("$500")
15
+ account.balance.should eql("$500")
16
+ end
17
+ end
18
+
19
+ context "Charging account with Erroneous conditions, " do
20
+ it "with invalid account" do
21
+ account = CcManager::Account.new("Tom", "4111r111u1111111", "$1000")
22
+ account.name.should eql("Tom")
23
+ account.limit.should eql("$1000")
24
+ account.balance.should eql("$0")
25
+ account.errors.should include("Tom's account could not be added because Credit Card is invalid!!!")
26
+ account.valid_account.should eql(false)
27
+
28
+ account.charge("$500")
29
+ account.balance.should eql("$0")
30
+ account.errors.should include("Cannot Charge because Invalid Account!!!")
31
+ end
32
+
33
+ it "with invalid charged amount i.e. containing decimal value" do
34
+ account = CcManager::Account.new("Tom", "4111111111111111", "$1000")
35
+ account.name.should eql("Tom")
36
+ account.limit.should eql("$1000")
37
+ account.balance.should eql("$0")
38
+ account.cc_number.should eql("4111111111111111")
39
+ account.errors.should eql([])
40
+ account.valid_account.should eql(true)
41
+
42
+ account.charge("$500.0")
43
+ account.balance.should eql("$0")
44
+ account.errors.should include("Cannot Charge because Invalid Amount!!!")
45
+ end
46
+
47
+ it "with invalid charged amount i.e. not starting with $ in the amount" do
48
+ account = CcManager::Account.new("Tom", "4111111111111111", "$1000")
49
+ account.name.should eql("Tom")
50
+ account.limit.should eql("$1000")
51
+ account.balance.should eql("$0")
52
+ account.cc_number.should eql("4111111111111111")
53
+ account.errors.should eql([])
54
+ account.valid_account.should eql(true)
55
+
56
+ account.charge("%500")
57
+ account.balance.should eql("$0")
58
+ account.errors.should include("Cannot Charge because Invalid Amount!!!")
59
+ end
60
+
61
+ it "with charged amount greater than the limit of Account" do
62
+ account = CcManager::Account.new("Tom", "4111111111111111", "$1000")
63
+ account.name.should eql("Tom")
64
+ account.limit.should eql("$1000")
65
+ account.balance.should eql("$0")
66
+ account.cc_number.should eql("4111111111111111")
67
+ account.errors.should eql([])
68
+ account.valid_account.should eql(true)
69
+
70
+ account.charge("$500")
71
+ account.balance.should eql("$500")
72
+ account.charge("$800")
73
+ account.balance.should eql("$500")
74
+ account.errors.should include("Cannot Charge because Charged Amount exceeded the limit!!!")
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,77 @@
1
+ require 'spec_helper'
2
+
3
+ describe CcManager::Account do
4
+ context "Adding Credits for valid account without any errors, " do
5
+ it "having valid credit card number" do
6
+ account = CcManager::Account.new("Tom", "4111111111111111", "$1000")
7
+ account.name.should eql("Tom")
8
+ account.cc_number.should eql("4111111111111111")
9
+ account.limit.should eql("$1000")
10
+ account.balance.should eql("$0")
11
+ account.errors.should eql([])
12
+ account.valid_account.should eql(true)
13
+
14
+ account.credit("$200")
15
+ account.balance.should eql("$-200")
16
+ end
17
+
18
+ it "having valid credit card number and already charged account" do
19
+ account = CcManager::Account.new("Tom", "4111111111111111", "$1000")
20
+ account.name.should eql("Tom")
21
+ account.cc_number.should eql("4111111111111111")
22
+ account.limit.should eql("$1000")
23
+ account.balance.should eql("$0")
24
+ account.errors.should eql([])
25
+ account.valid_account.should eql(true)
26
+
27
+ account.charge("$800")
28
+ account.balance.should eql("$800")
29
+
30
+ account.credit("$200")
31
+ account.balance.should eql("$600")
32
+ end
33
+ end
34
+
35
+ context "Adding Credit to account with Erronous conditions, " do
36
+ it "with invalid account" do
37
+ account = CcManager::Account.new("Tom", "4111r111u1111111", "$1000")
38
+ account.name.should eql("Tom")
39
+ account.limit.should eql("$1000")
40
+ account.balance.should eql("$0")
41
+ account.errors.should include("Tom's account could not be added because Credit Card is invalid!!!")
42
+ account.valid_account.should eql(false)
43
+
44
+ account.credit("$500")
45
+ account.balance.should eql("$0")
46
+ account.errors.should include("Cannot Add Credit because Invalid Account!!!")
47
+ end
48
+
49
+ it "with invalid credited amount i.e. containing decimal value" do
50
+ account = CcManager::Account.new("Tom", "4111111111111111", "$1000")
51
+ account.name.should eql("Tom")
52
+ account.limit.should eql("$1000")
53
+ account.balance.should eql("$0")
54
+ account.cc_number.should eql("4111111111111111")
55
+ account.errors.should eql([])
56
+ account.valid_account.should eql(true)
57
+
58
+ account.credit("$500.0")
59
+ account.balance.should eql("$0")
60
+ account.errors.should include("Cannot Add Credit because Invalid Amount!!!")
61
+ end
62
+
63
+ it "with invalid credited amount i.e. not starting with $ in the amount" do
64
+ account = CcManager::Account.new("Tom", "4111111111111111", "$1000")
65
+ account.name.should eql("Tom")
66
+ account.limit.should eql("$1000")
67
+ account.balance.should eql("$0")
68
+ account.cc_number.should eql("4111111111111111")
69
+ account.errors.should eql([])
70
+ account.valid_account.should eql(true)
71
+
72
+ account.credit("%500")
73
+ account.balance.should eql("$0")
74
+ account.errors.should include("Cannot Add Credit because Invalid Amount!!!")
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,2 @@
1
+ require 'pry'
2
+ require 'cc_manager'
metadata ADDED
@@ -0,0 +1,157 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cc_manager
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Manish Lal Das
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-09-05 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: &2159307460 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '0.14'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2159307460
25
+ - !ruby/object:Gem::Dependency
26
+ name: terminal-table
27
+ requirement: &2159306640 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '1.4'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2159306640
36
+ - !ruby/object:Gem::Dependency
37
+ name: aruba
38
+ requirement: &2159306000 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *2159306000
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: &2159304920 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 2.6.0
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *2159304920
58
+ - !ruby/object:Gem::Dependency
59
+ name: bundler
60
+ requirement: &2159295040 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 1.0.0
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *2159295040
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: &2159294420 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *2159294420
80
+ - !ruby/object:Gem::Dependency
81
+ name: pry-doc
82
+ requirement: &2159293940 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *2159293940
91
+ description: Managing Credit card processing with ease via command line app with file
92
+ input
93
+ email:
94
+ - manishlaldas.md@gmail.com
95
+ executables:
96
+ - ccmgr
97
+ extensions: []
98
+ extra_rdoc_files: []
99
+ files:
100
+ - .gitignore
101
+ - .rspec
102
+ - Gemfile
103
+ - README.md
104
+ - Rakefile
105
+ - cc_manager.gemspec
106
+ - features/invalid_file.feature
107
+ - features/process.feature
108
+ - features/support/env.rb
109
+ - features/version.feature
110
+ - lib/cc_manager.rb
111
+ - lib/cc_manager/account.rb
112
+ - lib/cc_manager/cli.rb
113
+ - lib/cc_manager/version.rb
114
+ - spec/add_spec.rb
115
+ - spec/charge_spec.rb
116
+ - spec/credit_spec.rb
117
+ - spec/spec_helper.rb
118
+ - bin/ccmgr
119
+ homepage: http://manishdas.github.com/cc_manager
120
+ licenses: []
121
+ post_install_message: ! " \n ********************************************************************************\n
122
+ \ \n Process credit card information with ease\n using CLI and file as input\n
123
+ \ \n # cc_details.txt\n Add Tom 4111111111111111 $1000\n Add
124
+ Lisa 5454545454545454 $3000\n Add Quincy 1234567890123456 $2000\n Charge
125
+ Tom $500\n Charge Tom $800\n Charge Lisa $7\n Credit Lisa $100\n
126
+ \ Credit Quincy $200\n\n > ccmgr cc_details.txt\n \n Output:\n\n
127
+ \ Lisa: $-93\n Quincy: error\n Tom: $500\n \n ********************************************************************************\n\n"
128
+ rdoc_options: []
129
+ require_paths:
130
+ - lib
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ requirements: []
144
+ rubyforge_project: cc_manager
145
+ rubygems_version: 1.8.10
146
+ signing_key:
147
+ specification_version: 3
148
+ summary: Credit card processing
149
+ test_files:
150
+ - features/invalid_file.feature
151
+ - features/process.feature
152
+ - features/support/env.rb
153
+ - features/version.feature
154
+ - spec/add_spec.rb
155
+ - spec/charge_spec.rb
156
+ - spec/credit_spec.rb
157
+ - spec/spec_helper.rb