bank_statement_parser 2.0.2 → 2.0.3

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/bank_statement_parser.rb +20 -11
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d99cd373fae3cd429ef8473c7d4a4be5d5a12343
4
- data.tar.gz: 457db4075dd1eb20a9fcdd4d3283f1a296e473bb
3
+ metadata.gz: 301c2e4798b07a32118e9255440c2eb26e3a12ba
4
+ data.tar.gz: b991961a1ddb3b55c659cf1844433e4a577bd9e5
5
5
  SHA512:
6
- metadata.gz: e1ec92b642c8f1f7e1ccc9f21bbd4ae037e627046b8b5103634aa47f2894a54e4bbb60cf545cff179d7ee8a391df126e7332e18c328e83e9cc8ca85ed41a5b61
7
- data.tar.gz: 1db173814d4ade098440c9ff692334cecfb2dd8cba70a2e70168e5bbe5d30792117c60a3f2c3e8a12e52faf434ff7c9f64eb186bd7603144746209d2288005fa
6
+ metadata.gz: ea98b7ca1864e25aea24bfffd0260a04def3a75f618144466139945efe1bce74135798586df6c0e75ef5a2225daa6f0414ef24ba1620565f89ffe49b3dd519a2
7
+ data.tar.gz: a481fd55a35ab64c848a806f82ff4605cbebd4482cf7d59bd539fff7dc4fc409dfe59f8e04b6ce0bf91206eb1114412564ba3bc2accceb23968fe1efe9cdca08
@@ -18,10 +18,17 @@
18
18
  require 'logger'
19
19
  require 'bank_statement_parser/hsbc'
20
20
  module BankStatementParser
21
+ # Known banks should all be tabulated here
22
+ @@banks = {
23
+ hsbc: 'HSBC',
24
+ }
25
+
26
+ def self.register_bank(key, val)
27
+ @@banks[key] = val
28
+ end
21
29
 
22
- @@logger = Logger.new(STDERR)
23
30
  def self.logger
24
- @@logger
31
+ @@logger ||= Logger.new(STDERR)
25
32
  end
26
33
  def self.logger=(logger)
27
34
  @@logger = logger
@@ -31,21 +38,23 @@ module BankStatementParser
31
38
  #
32
39
  # Returns an instance of BankStatement
33
40
  def self.parse path, bank_symbol = :hsbc
34
- # Known banks should all be tabulated here
35
- banks = {
36
- hsbc: 'HSBC',
37
- }
38
- bank = banks[bank_symbol] or raise "Unknown bank #{bank_symbol}"
41
+ parser = parser_factory(bank_symbol)
42
+ parser.parse path
43
+
44
+ return parser.bank_statement
45
+ end
46
+
47
+ # Create a parser for the specified bank
48
+ def self.parser_factory(bank_symbol)
49
+ bank = @@banks[bank_symbol] or raise "Unknown bank #{bank_symbol}"
39
50
 
40
51
  parser_class = Kernel.const_get(self.name + '::' + bank)
41
52
  raise "No parser for #{bank} statements" unless Class == parser_class.class
42
53
 
43
54
  parser = parser_class.new
44
- parser.parse path
45
-
46
- return parser.bank_statement
55
+ raise "Invalid parser class" unless parser.is_a?(BankStatementParser::Base)
56
+ parser
47
57
  end
48
-
49
58
  end
50
59
 
51
60
  require 'bank_statement_parser/railtie' if defined?(Rails)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bank_statement_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Dawson