payoneer_csv 0.1.2 → 0.1.4
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/.travis.yml +2 -2
- data/Gemfile +3 -1
- data/README.md +2 -2
- data/bin/payoneer_csv +22 -13
- data/features/payoneer_csv.feature +57 -0
- data/features/step_definitions/payoneer_csv_steps.rb +1 -0
- data/features/support/env.rb +17 -0
- data/lib/payoneer_csv/pdf_reader.rb +2 -2
- data/lib/payoneer_csv/version.rb +1 -1
- data/payoneer_csv.gemspec +2 -0
- data/spec/fixtures/Transactions2.pdf +0 -0
- data/spec/payoneer_csv/pdf_reader_spec.rb +9 -9
- metadata +28 -4
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -6,9 +6,9 @@ Simple tool for converting payoneer pdf report to csv file.
|
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
9
|
-
First of all install `
|
|
9
|
+
First of all install `ps2ascii` executable
|
|
10
10
|
|
|
11
|
-
$ sudo apt-get install
|
|
11
|
+
$ sudo apt-get install ghostscript
|
|
12
12
|
|
|
13
13
|
Add this line to your application's Gemfile:
|
|
14
14
|
|
data/bin/payoneer_csv
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exit
|
|
6
|
-
end
|
|
7
|
-
|
|
3
|
+
require 'optparse'
|
|
4
|
+
require 'methadone'
|
|
8
5
|
require 'payoneer_csv'
|
|
9
6
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
class App
|
|
8
|
+
include Methadone::Main
|
|
9
|
+
include Methadone::CLILogging
|
|
10
|
+
|
|
11
|
+
main do |file_path|
|
|
12
|
+
unless File.exist?(file_path)
|
|
13
|
+
puts "Cannot find file: #{file_path}"
|
|
14
|
+
exit
|
|
15
|
+
end
|
|
15
16
|
|
|
16
|
-
reader = PayoneerCsv::PdfReader.new(file_path)
|
|
17
|
-
csv_string = PayoneerCsv::Csv.new(reader.read).generate
|
|
18
|
-
puts csv_string
|
|
17
|
+
reader = PayoneerCsv::PdfReader.new(file_path)
|
|
18
|
+
csv_string = PayoneerCsv::Csv.new(reader.read).generate
|
|
19
|
+
puts csv_string
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
arg :file_path
|
|
23
|
+
|
|
24
|
+
version PayoneerCsv::VERSION
|
|
25
|
+
|
|
26
|
+
go!
|
|
27
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
Feature: My bootstrapped app kinda works
|
|
2
|
+
In order to get going on coding my awesome app
|
|
3
|
+
I want to have aruba and cucumber setup
|
|
4
|
+
So I don't have to do it myself
|
|
5
|
+
|
|
6
|
+
Scenario: App just runs
|
|
7
|
+
When I get help for "payoneer_csv"
|
|
8
|
+
Then the exit status should be 0
|
|
9
|
+
And the banner should be present
|
|
10
|
+
And the banner should document that this app takes options
|
|
11
|
+
And the following options should be documented:
|
|
12
|
+
| --version |
|
|
13
|
+
And the banner should document that this app's arguments are:
|
|
14
|
+
| file_path | which is required |
|
|
15
|
+
|
|
16
|
+
Scenario: Run with non existing file
|
|
17
|
+
When I run `payoneer_csv non-existing.pdf`
|
|
18
|
+
Then the output should contain "Cannot find file: non-existing.pdf"
|
|
19
|
+
|
|
20
|
+
Scenario: Run with existing file
|
|
21
|
+
When I run `payoneer_csv Transactions.pdf`
|
|
22
|
+
Then the output should contain:
|
|
23
|
+
"""
|
|
24
|
+
Transaction Date,Description,Amount,Currency
|
|
25
|
+
10/17/2012 5:58:20 AM,ATM Withdrawal - Vaci u. 42.,-75.29,USD
|
|
26
|
+
10/16/2012 6:41:30 AM,ROSSMANN,-14.2,USD
|
|
27
|
+
10/15/2012 8:30:15 PM,Prima,-4.98,USD
|
|
28
|
+
10/15/2012 8:44:18 AM,PKP Intercity,-48.61,USD
|
|
29
|
+
10/18/2012 2:52:18 AM,ATM Withdrawal - OTP,-51.02,USD
|
|
30
|
+
10/19/2012 11:38:12 PM,PSS SKLEP NR 54,-17.36,USD
|
|
31
|
+
10/19/2012 6:41:14 AM,COSTA COFFEE,-7.41,USD
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
Scenario: Run with other existing file
|
|
35
|
+
When I run `payoneer_csv Transactions2.pdf`
|
|
36
|
+
Then the output should contain:
|
|
37
|
+
"""
|
|
38
|
+
Transaction Date,Description,Amount,Currency
|
|
39
|
+
10/18/2012 2:52:18 AM,ATM Withdrawal - OTP,-51.02,USD
|
|
40
|
+
10/19/2012 6:41:14 AM,COSTA COFFEE,-7.41,USD
|
|
41
|
+
10/26/2012 8:10:10 PM,Delikatesy Alma,-13.19,USD
|
|
42
|
+
10/26/2012 12:25:14 AM,DEEZER,-4.87,USD
|
|
43
|
+
10/19/2012 11:38:12 PM,PSS SKLEP NR 54,-17.36,USD
|
|
44
|
+
10/26/2012 8:15:31 PM,Delikatesy Alma,-7.83,USD
|
|
45
|
+
10/23/2012 8:23:51 PM,Delikatesy Alma,-31.42,USD
|
|
46
|
+
10/21/2012 10:53:31 PM,CAFE ARTE,-3.14,USD
|
|
47
|
+
10/21/2012 10:21:28 PM,PSS SKLEP,-5.47,USD
|
|
48
|
+
10/23/2012 6:28:09 AM,SJO Empik,-23.17,USD
|
|
49
|
+
10/22/2012 2:47:05 AM,Delikatesy Alma,-77.25,USD
|
|
50
|
+
10/15/2012 8:44:18 AM,PKP Intercity,-48.61,USD
|
|
51
|
+
10/11/2012 8:31:56 PM,Delikatesy Alma,-42.89,USD
|
|
52
|
+
10/10/2012 8:10:37 PM,HAPPY,-4.31,USD
|
|
53
|
+
10/10/2012 8:02:27 PM,Withdrawal Notification Lukasz Bandzarewicz 1198,1198.0,USD
|
|
54
|
+
10/15/2012 8:30:15 PM,Prima,-4.98,USD
|
|
55
|
+
10/17/2012 5:58:20 AM,ATM Withdrawal - Vaci u. 42.,-75.29,USD
|
|
56
|
+
10/16/2012 6:41:30 AM,ROSSMANN,-14.2,USD
|
|
57
|
+
"""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Put your step definitions here
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'aruba/cucumber'
|
|
2
|
+
require 'methadone/cucumber'
|
|
3
|
+
|
|
4
|
+
ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
|
|
5
|
+
LIB_DIR = File.join(File.expand_path(File.dirname(__FILE__)),'..','..','lib')
|
|
6
|
+
|
|
7
|
+
Before do
|
|
8
|
+
# Using "announce" causes massive warnings on 1.9.2
|
|
9
|
+
@puts = true
|
|
10
|
+
@dirs = ["spec/fixtures"]
|
|
11
|
+
@original_rubylib = ENV['RUBYLIB']
|
|
12
|
+
ENV['RUBYLIB'] = LIB_DIR + File::PATH_SEPARATOR + ENV['RUBYLIB'].to_s
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
After do
|
|
16
|
+
ENV['RUBYLIB'] = @original_rubylib
|
|
17
|
+
end
|
|
@@ -21,11 +21,11 @@ module PayoneerCsv
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def raw_data
|
|
24
|
-
`
|
|
24
|
+
`ps2ascii #{file_path}`
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def parse(row)
|
|
28
|
-
row.match /^(?<created_at>\d{1,2}\/\d{1,2}\/\d{4} \d{1,2}:\d{2}:\d{2} (AM|PM))\s
|
|
28
|
+
row.match /^(?<created_at>\d{1,2}\/\d{1,2}\/\d{4} \d{1,2}:\d{2}:\d{2} (AM|PM))\s(?<description>.+) (?<amount>-?(\d|,)+\.\d{2})\s+USD$/
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
|
data/lib/payoneer_csv/version.rb
CHANGED
data/payoneer_csv.gemspec
CHANGED
|
Binary file
|
|
@@ -17,10 +17,10 @@ describe PayoneerCsv::PdfReader do
|
|
|
17
17
|
it 'should include some transactions' do
|
|
18
18
|
should_not be_empty
|
|
19
19
|
|
|
20
|
-
should include('10/19/2012 11:38:12 PM
|
|
21
|
-
should include('10/19/2012 6:41:14 AM
|
|
20
|
+
should include('10/19/2012 11:38:12 PM PSS SKLEP NR 54 -17.36 USD')
|
|
21
|
+
should include('10/19/2012 6:41:14 AM COSTA COFFEE -7.41 USD')
|
|
22
22
|
# ...
|
|
23
|
-
should include('10/15/2012 8:44:18 AM
|
|
23
|
+
should include('10/15/2012 8:44:18 AM PKP Intercity -48.61 USD')
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
end
|
|
@@ -32,20 +32,20 @@ describe PayoneerCsv::PdfReader do
|
|
|
32
32
|
subject { reader.parse(row) }
|
|
33
33
|
|
|
34
34
|
context 'on valid row (with negative amount)' do
|
|
35
|
-
let(:row) { '10/17/2012 5:58:20 AM
|
|
35
|
+
let(:row) { '10/17/2012 5:58:20 AM ATM Withdrawal - Vaci u. 42. -75.29 USD' }
|
|
36
36
|
|
|
37
37
|
it { should_not be_nil }
|
|
38
38
|
its([:created_at]) { should == '10/17/2012 5:58:20 AM' }
|
|
39
|
-
its([:description]) { should == 'ATM Withdrawal - Vaci u. 42.
|
|
39
|
+
its([:description]) { should == 'ATM Withdrawal - Vaci u. 42.' }
|
|
40
40
|
its([:amount]) { should == '-75.29' }
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
context 'on valid row (with positive amount)' do
|
|
44
|
-
let(:row) { '10/19/2012 11:38:12 PM
|
|
44
|
+
let(:row) { '10/19/2012 11:38:12 PM PSS SKLEP NR 54 2,117.36 USD' }
|
|
45
45
|
|
|
46
46
|
it { should_not be_nil }
|
|
47
47
|
its([:created_at]) { should == '10/19/2012 11:38:12 PM' }
|
|
48
|
-
its([:description]) { should == 'PSS SKLEP NR 54
|
|
48
|
+
its([:description]) { should == 'PSS SKLEP NR 54' }
|
|
49
49
|
its([:amount]) { should == '2,117.36' }
|
|
50
50
|
end
|
|
51
51
|
|
|
@@ -66,8 +66,8 @@ describe PayoneerCsv::PdfReader do
|
|
|
66
66
|
|
|
67
67
|
it { should have(7).items }
|
|
68
68
|
|
|
69
|
-
describe '
|
|
70
|
-
subject { result
|
|
69
|
+
describe 'a transaction' do
|
|
70
|
+
subject { result[5] }
|
|
71
71
|
|
|
72
72
|
its(:created_at) { should == '10/19/2012 11:38:12 PM' }
|
|
73
73
|
its(:description) { should == 'PSS SKLEP NR 54' }
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: payoneer_csv
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,8 +9,24 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
13
|
-
dependencies:
|
|
12
|
+
date: 2013-09-11 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: methadone
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - '='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: 1.2.2
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - '='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: 1.2.2
|
|
14
30
|
description: Simple tool for converting payoneer pdf report to csv file
|
|
15
31
|
email:
|
|
16
32
|
- lucassus@gmail.com
|
|
@@ -27,6 +43,9 @@ files:
|
|
|
27
43
|
- README.md
|
|
28
44
|
- Rakefile
|
|
29
45
|
- bin/payoneer_csv
|
|
46
|
+
- features/payoneer_csv.feature
|
|
47
|
+
- features/step_definitions/payoneer_csv_steps.rb
|
|
48
|
+
- features/support/env.rb
|
|
30
49
|
- lib/payoneer_csv.rb
|
|
31
50
|
- lib/payoneer_csv/csv.rb
|
|
32
51
|
- lib/payoneer_csv/pdf_reader.rb
|
|
@@ -34,6 +53,7 @@ files:
|
|
|
34
53
|
- lib/payoneer_csv/version.rb
|
|
35
54
|
- payoneer_csv.gemspec
|
|
36
55
|
- spec/fixtures/Transactions.pdf
|
|
56
|
+
- spec/fixtures/Transactions2.pdf
|
|
37
57
|
- spec/payoneer_csv/csv_spec.rb
|
|
38
58
|
- spec/payoneer_csv/pdf_reader_spec.rb
|
|
39
59
|
- spec/payoneer_csv/transaction_spec.rb
|
|
@@ -58,12 +78,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
58
78
|
version: '0'
|
|
59
79
|
requirements: []
|
|
60
80
|
rubyforge_project:
|
|
61
|
-
rubygems_version: 1.8.
|
|
81
|
+
rubygems_version: 1.8.25
|
|
62
82
|
signing_key:
|
|
63
83
|
specification_version: 3
|
|
64
84
|
summary: Convert payoneer pdf report to csv file
|
|
65
85
|
test_files:
|
|
86
|
+
- features/payoneer_csv.feature
|
|
87
|
+
- features/step_definitions/payoneer_csv_steps.rb
|
|
88
|
+
- features/support/env.rb
|
|
66
89
|
- spec/fixtures/Transactions.pdf
|
|
90
|
+
- spec/fixtures/Transactions2.pdf
|
|
67
91
|
- spec/payoneer_csv/csv_spec.rb
|
|
68
92
|
- spec/payoneer_csv/pdf_reader_spec.rb
|
|
69
93
|
- spec/payoneer_csv/transaction_spec.rb
|