ng-bank-parser 0.1.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 +7 -0
- data/.gitignore +35 -0
- data/.rspec +2 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +80 -0
- data/LICENSE +340 -0
- data/LICENSE.txt +21 -0
- data/README.md +92 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/lib/ng-bank-parser.rb +11 -0
- data/lib/ng-bank-parser/banks.rb +24 -0
- data/lib/ng-bank-parser/fixtures/firstbank-pdf-invalid.xlsx +0 -0
- data/lib/ng-bank-parser/fixtures/firstbank-pdf-valid.pdf +0 -0
- data/lib/ng-bank-parser/fixtures/gtb-excel-invalid.pdf +0 -0
- data/lib/ng-bank-parser/fixtures/gtb-excel-valid.xls +1332 -0
- data/lib/ng-bank-parser/fixtures/gtb-excel-valid.xlsx +0 -0
- data/lib/ng-bank-parser/fixtures/uba-pdf-invalid.pdf +0 -0
- data/lib/ng-bank-parser/fixtures/uba-pdf-valid.pdf +0 -0
- data/lib/ng-bank-parser/parsers/firstbank-pdf-parser.rb +81 -0
- data/lib/ng-bank-parser/parsers/firstbank-pdf-parser/helpers.rb +172 -0
- data/lib/ng-bank-parser/parsers/firstbank-pdf-parser/statement_utils.rb +51 -0
- data/lib/ng-bank-parser/parsers/gtb-excel-parser.rb +66 -0
- data/lib/ng-bank-parser/parsers/gtb-excel-parser/helpers.rb +121 -0
- data/lib/ng-bank-parser/parsers/uba-pdf-parser.rb +98 -0
- data/lib/ng-bank-parser/parsers/uba-pdf-parser/classes/string.rb +56 -0
- data/lib/ng-bank-parser/parsers/uba-pdf-parser/classes/transaction.rb +73 -0
- data/lib/ng-bank-parser/parsers/uba-pdf-parser/constants.rb +32 -0
- data/lib/ng-bank-parser/parsers/uba-pdf-parser/pdf_checks.rb +58 -0
- data/lib/ng-bank-parser/parsers/uba-pdf-parser/transaction_tools.rb +110 -0
- data/lib/ng-bank-parser/pdf-unlocker.rb +24 -0
- data/lib/ng-bank-parser/router.rb +44 -0
- data/lib/ng-bank-parser/version.rb +3 -0
- data/ng-bank-parser.gemspec +31 -0
- metadata +198 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
module NgBankParser
|
2
|
+
class Router
|
3
|
+
@banks_hash = $Banks
|
4
|
+
@supported_extension_array = []
|
5
|
+
@selected_bank_index
|
6
|
+
|
7
|
+
#this takes our bank parser along with the bank name supplied from the payload so as to compare
|
8
|
+
#and see if the file extension is available for that bank
|
9
|
+
#it's result is to fill up the @supported_extension_array with the supported bank extensions
|
10
|
+
def self.parse(bank_key, path, password = nil)
|
11
|
+
@password = password;
|
12
|
+
@selected_bank_index = @banks_hash.index {|x| x[:key] == bank_key}
|
13
|
+
|
14
|
+
if @selected_bank_index.nil?
|
15
|
+
return {status: 0, message: "Your bank is not yet supported"}
|
16
|
+
else
|
17
|
+
@supported_extension_array += @banks_hash[@selected_bank_index][:parsers].map {|e| e[:extensions]}
|
18
|
+
parser_picker(path)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
#this uses the extension in the file of the uploaded payload to check support in @supported_extension_array
|
25
|
+
#and goes on to pick the parser to use for the operation
|
26
|
+
def self.parser_picker(path)
|
27
|
+
extension_name = File.extname(path).delete('.')
|
28
|
+
if @supported_extension_array.reduce(:concat).include?(extension_name)
|
29
|
+
ng_bank_parsers(path)
|
30
|
+
else
|
31
|
+
return {status: 0, message:"The '.#{extension_name}' file format is not supported for your bank."}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
#Builds the the parser to use from the name and file format of the uploaded file
|
36
|
+
def self.ng_bank_parsers(path)
|
37
|
+
key = @banks_hash[@selected_bank_index][:key].capitalize
|
38
|
+
format = @banks_hash[@selected_bank_index][:parsers].map { |e| e[:format].capitalize }
|
39
|
+
class_name = key + format.reduce(:concat)
|
40
|
+
NgBankParser.const_get(class_name).parse(path, @password)
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'ng-bank-parser/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "ng-bank-parser"
|
8
|
+
spec.version = NgBankParser::VERSION
|
9
|
+
spec.authors = ["Opemipo Aikomo","Timilehin Ajiboye","Lolu Bodunwa","Oluro Olaoluwa"]
|
10
|
+
spec.email = ["opemipoaikomo@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{This is a simple gem to parse Nigerian bank statements of all formats created by Devcenter Square}
|
13
|
+
spec.description = %q{This is a simple gem to parse Nigerian bank statements of all formats. This is a community project by Devcenter Square (devcenter-square.github.io). If your bank and/or file format is not supported, consider reading the contribute wiki and submitting a pull request.}
|
14
|
+
spec.homepage = "http://devcenter-square.github.io/ng-bank-parser/"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
23
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
24
|
+
spec.add_development_dependency "rspec"
|
25
|
+
|
26
|
+
spec.add_dependency "nokogiri"
|
27
|
+
spec.add_dependency "roo"
|
28
|
+
spec.add_dependency "pdf-reader"
|
29
|
+
spec.add_dependency "activesupport"
|
30
|
+
spec.add_dependency 'httmultiparty'
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,198 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ng-bank-parser
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Opemipo Aikomo
|
8
|
+
- Timilehin Ajiboye
|
9
|
+
- Lolu Bodunwa
|
10
|
+
- Oluro Olaoluwa
|
11
|
+
autorequire:
|
12
|
+
bindir: exe
|
13
|
+
cert_chain: []
|
14
|
+
date: 2015-08-29 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: bundler
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.10'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.10'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - ~>
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '10.0'
|
37
|
+
type: :development
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '10.0'
|
44
|
+
- !ruby/object:Gem::Dependency
|
45
|
+
name: rspec
|
46
|
+
requirement: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - '>='
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '0'
|
51
|
+
type: :development
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: nokogiri
|
60
|
+
requirement: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
type: :runtime
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
- !ruby/object:Gem::Dependency
|
73
|
+
name: roo
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
type: :runtime
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: pdf-reader
|
88
|
+
requirement: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
type: :runtime
|
94
|
+
prerelease: false
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: activesupport
|
102
|
+
requirement: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - '>='
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
107
|
+
type: :runtime
|
108
|
+
prerelease: false
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: httmultiparty
|
116
|
+
requirement: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
type: :runtime
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
description: This is a simple gem to parse Nigerian bank statements of all formats.
|
129
|
+
This is a community project by Devcenter Square (devcenter-square.github.io). If
|
130
|
+
your bank and/or file format is not supported, consider reading the contribute wiki
|
131
|
+
and submitting a pull request.
|
132
|
+
email:
|
133
|
+
- opemipoaikomo@gmail.com
|
134
|
+
executables: []
|
135
|
+
extensions: []
|
136
|
+
extra_rdoc_files: []
|
137
|
+
files:
|
138
|
+
- .gitignore
|
139
|
+
- .rspec
|
140
|
+
- CODE_OF_CONDUCT.md
|
141
|
+
- Gemfile
|
142
|
+
- Gemfile.lock
|
143
|
+
- LICENSE
|
144
|
+
- LICENSE.txt
|
145
|
+
- README.md
|
146
|
+
- Rakefile
|
147
|
+
- bin/console
|
148
|
+
- bin/setup
|
149
|
+
- lib/ng-bank-parser.rb
|
150
|
+
- lib/ng-bank-parser/banks.rb
|
151
|
+
- lib/ng-bank-parser/fixtures/firstbank-pdf-invalid.xlsx
|
152
|
+
- lib/ng-bank-parser/fixtures/firstbank-pdf-valid.pdf
|
153
|
+
- lib/ng-bank-parser/fixtures/gtb-excel-invalid.pdf
|
154
|
+
- lib/ng-bank-parser/fixtures/gtb-excel-valid.xls
|
155
|
+
- lib/ng-bank-parser/fixtures/gtb-excel-valid.xlsx
|
156
|
+
- lib/ng-bank-parser/fixtures/uba-pdf-invalid.pdf
|
157
|
+
- lib/ng-bank-parser/fixtures/uba-pdf-valid.pdf
|
158
|
+
- lib/ng-bank-parser/parsers/firstbank-pdf-parser.rb
|
159
|
+
- lib/ng-bank-parser/parsers/firstbank-pdf-parser/helpers.rb
|
160
|
+
- lib/ng-bank-parser/parsers/firstbank-pdf-parser/statement_utils.rb
|
161
|
+
- lib/ng-bank-parser/parsers/gtb-excel-parser.rb
|
162
|
+
- lib/ng-bank-parser/parsers/gtb-excel-parser/helpers.rb
|
163
|
+
- lib/ng-bank-parser/parsers/uba-pdf-parser.rb
|
164
|
+
- lib/ng-bank-parser/parsers/uba-pdf-parser/classes/string.rb
|
165
|
+
- lib/ng-bank-parser/parsers/uba-pdf-parser/classes/transaction.rb
|
166
|
+
- lib/ng-bank-parser/parsers/uba-pdf-parser/constants.rb
|
167
|
+
- lib/ng-bank-parser/parsers/uba-pdf-parser/pdf_checks.rb
|
168
|
+
- lib/ng-bank-parser/parsers/uba-pdf-parser/transaction_tools.rb
|
169
|
+
- lib/ng-bank-parser/pdf-unlocker.rb
|
170
|
+
- lib/ng-bank-parser/router.rb
|
171
|
+
- lib/ng-bank-parser/version.rb
|
172
|
+
- ng-bank-parser.gemspec
|
173
|
+
homepage: http://devcenter-square.github.io/ng-bank-parser/
|
174
|
+
licenses:
|
175
|
+
- MIT
|
176
|
+
metadata: {}
|
177
|
+
post_install_message:
|
178
|
+
rdoc_options: []
|
179
|
+
require_paths:
|
180
|
+
- lib
|
181
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - '>='
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0'
|
186
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
|
+
requirements:
|
188
|
+
- - '>='
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
191
|
+
requirements: []
|
192
|
+
rubyforge_project:
|
193
|
+
rubygems_version: 2.4.2
|
194
|
+
signing_key:
|
195
|
+
specification_version: 4
|
196
|
+
summary: This is a simple gem to parse Nigerian bank statements of all formats created
|
197
|
+
by Devcenter Square
|
198
|
+
test_files: []
|