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.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +35 -0
  3. data/.rspec +2 -0
  4. data/CODE_OF_CONDUCT.md +13 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +80 -0
  7. data/LICENSE +340 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +92 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +7 -0
  13. data/lib/ng-bank-parser.rb +11 -0
  14. data/lib/ng-bank-parser/banks.rb +24 -0
  15. data/lib/ng-bank-parser/fixtures/firstbank-pdf-invalid.xlsx +0 -0
  16. data/lib/ng-bank-parser/fixtures/firstbank-pdf-valid.pdf +0 -0
  17. data/lib/ng-bank-parser/fixtures/gtb-excel-invalid.pdf +0 -0
  18. data/lib/ng-bank-parser/fixtures/gtb-excel-valid.xls +1332 -0
  19. data/lib/ng-bank-parser/fixtures/gtb-excel-valid.xlsx +0 -0
  20. data/lib/ng-bank-parser/fixtures/uba-pdf-invalid.pdf +0 -0
  21. data/lib/ng-bank-parser/fixtures/uba-pdf-valid.pdf +0 -0
  22. data/lib/ng-bank-parser/parsers/firstbank-pdf-parser.rb +81 -0
  23. data/lib/ng-bank-parser/parsers/firstbank-pdf-parser/helpers.rb +172 -0
  24. data/lib/ng-bank-parser/parsers/firstbank-pdf-parser/statement_utils.rb +51 -0
  25. data/lib/ng-bank-parser/parsers/gtb-excel-parser.rb +66 -0
  26. data/lib/ng-bank-parser/parsers/gtb-excel-parser/helpers.rb +121 -0
  27. data/lib/ng-bank-parser/parsers/uba-pdf-parser.rb +98 -0
  28. data/lib/ng-bank-parser/parsers/uba-pdf-parser/classes/string.rb +56 -0
  29. data/lib/ng-bank-parser/parsers/uba-pdf-parser/classes/transaction.rb +73 -0
  30. data/lib/ng-bank-parser/parsers/uba-pdf-parser/constants.rb +32 -0
  31. data/lib/ng-bank-parser/parsers/uba-pdf-parser/pdf_checks.rb +58 -0
  32. data/lib/ng-bank-parser/parsers/uba-pdf-parser/transaction_tools.rb +110 -0
  33. data/lib/ng-bank-parser/pdf-unlocker.rb +24 -0
  34. data/lib/ng-bank-parser/router.rb +44 -0
  35. data/lib/ng-bank-parser/version.rb +3 -0
  36. data/ng-bank-parser.gemspec +31 -0
  37. 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,3 @@
1
+ module NgBankParser
2
+ VERSION = "0.1.2"
3
+ 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: []