hsbc_pdf_statement_parser 2.0.0 → 2.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 67d78ba59d35520d3f1c12ba39f5d53358a68c6d6a1eb7fc2aa8e9180a24db40
4
- data.tar.gz: 5bf2f6a30605cc92ba6c780051956a017b9ba1e4cd973e4ba6e671bece3f48f7
3
+ metadata.gz: 82491dbc1432d68cae81dfb231540cae6cf7d97f9887d12acf21ab0ad035cc96
4
+ data.tar.gz: a49a29e6a3e0daafd3ad264562dce68a787be372cb3f54cf7cc343d0f8d96efd
5
5
  SHA512:
6
- metadata.gz: 2cb49c96f8ec208224928924e9bedcfbe1287b0c1847c1ced480fa67ff3ceb50d5b643aa04885a09b627dcb48fab249b152aa579a9b3e40c050862ada3e11af1
7
- data.tar.gz: 4da639fa609cebb7101e15d47e36b5891486a649e4288884177dfe92373c6d429ecd756893e3e2525b77eff8e465e6a01a12736e37d9c0344a40c3dfb4f56f96
6
+ metadata.gz: 9461c4dca218916b524cf8eaf14c80ff1fb2e10d0087dfc95499955937854fcf70def7a032622368bc5ecfdd8b30031d0344c06f7738d2db9846a12d0f9fbfe9
7
+ data.tar.gz: fbcfb44820d054c890b5a56a300c13d70747faf84fddbd4c6d348a5fa8eb721cf464b98faf56f4ce483b47ac1ab354d20358eec6a5fe766da7f530777c0b2290
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ # local test harness
2
+ test.rb
3
+
4
+ # Ignore built gems
5
+ *.gem
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 4.0.7
data/Gemfile.lock ADDED
@@ -0,0 +1,78 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ hsbc_pdf_statement_parser (2.0.1)
5
+ dry-struct (~> 1.8)
6
+ pdf-reader (~> 2.16)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ Ascii85 (2.0.1)
12
+ afm (1.0.1)
13
+ bigdecimal (3.3.1)
14
+ concurrent-ruby (1.3.8)
15
+ dry-core (1.2.0)
16
+ concurrent-ruby (~> 1.0)
17
+ logger
18
+ zeitwerk (~> 2.6)
19
+ dry-inflector (1.3.1)
20
+ dry-logic (1.6.0)
21
+ bigdecimal
22
+ concurrent-ruby (~> 1.0)
23
+ dry-core (~> 1.1)
24
+ zeitwerk (~> 2.6)
25
+ dry-struct (1.8.1)
26
+ dry-core (~> 1.1)
27
+ dry-types (~> 1.8, >= 1.8.2)
28
+ ice_nine (~> 0.11)
29
+ zeitwerk (~> 2.6)
30
+ dry-types (1.9.1)
31
+ bigdecimal (>= 3.0)
32
+ concurrent-ruby (~> 1.0)
33
+ dry-core (~> 1.0)
34
+ dry-inflector (~> 1.0)
35
+ dry-logic (~> 1.4)
36
+ zeitwerk (~> 2.6)
37
+ hashery (2.1.2)
38
+ ice_nine (0.11.2)
39
+ logger (1.7.0)
40
+ pdf-reader (2.16.0)
41
+ Ascii85 (>= 1.0, < 3.0, != 2.0.0)
42
+ afm (>= 0.2.1, < 2)
43
+ hashery (~> 2.0)
44
+ ttfunk
45
+ rufo (0.18.2)
46
+ ttfunk (1.8.0)
47
+ bigdecimal (~> 3.1)
48
+ zeitwerk (2.8.3)
49
+
50
+ PLATFORMS
51
+ arm64-darwin-25
52
+ ruby
53
+
54
+ DEPENDENCIES
55
+ hsbc_pdf_statement_parser!
56
+ rufo
57
+
58
+ CHECKSUMS
59
+ Ascii85 (2.0.1) sha256=15cb5d941808543cbb9e7e6aea3c8ec3877f154c3461e8b3673e97f7ecedbe5a
60
+ afm (1.0.1) sha256=4fc98c6ea9cad60c25ae12bad517513b0d6fdbedc099e25be88bf47977b7d879
61
+ bigdecimal (3.3.1) sha256=eaa01e228be54c4f9f53bf3cc34fe3d5e845c31963e7fcc5bedb05a4e7d52218
62
+ concurrent-ruby (1.3.8) sha256=b2f1be836e968ccc78ccfce277ea79c72a88633f22306782c16ff23fb415d1e1
63
+ dry-core (1.2.0) sha256=0cc5a7da88df397f153947eeeae42e876e999c1e30900f3c536fb173854e96a1
64
+ dry-inflector (1.3.1) sha256=7fb0c2bb04f67638f25c52e7ba39ab435d922a3a5c3cd196120f63accb682dcc
65
+ dry-logic (1.6.0) sha256=da6fedbc0f90fc41f9b0cc7e6f05f5d529d1efaef6c8dcc8e0733f685745cea2
66
+ dry-struct (1.8.1) sha256=033868594c45241540172bf1ebbc8bb76b72b4f0717072325deba38ac13e80f1
67
+ dry-types (1.9.1) sha256=baebeecdb9f8395d6c9d227b62011279440943e3ef2468fe8ccc1ba11467f178
68
+ hashery (2.1.2) sha256=d239cc2310401903f6b79d458c2bbef5bf74c46f3f974ae9c1061fb74a404862
69
+ hsbc_pdf_statement_parser (2.0.1)
70
+ ice_nine (0.11.2) sha256=5d506a7d2723d5592dc121b9928e4931742730131f22a1a37649df1c1e2e63db
71
+ logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
72
+ pdf-reader (2.16.0) sha256=bf1b5564c085264d8279bde3cf1467778b75841494d20c0fe7da3dad475f3732
73
+ rufo (0.18.2) sha256=f279bea838aae7cd51149413a2dfa3383044b1c93f1469ceaddd1ca3824fc46f
74
+ ttfunk (1.8.0) sha256=a7cbc7e489cc46e979dde04d34b5b9e4f5c8f1ee5fc6b1a7be39b829919d20ca
75
+ zeitwerk (2.8.3) sha256=2c85125a8467ce069e20123d1e709a08955c9d29c118c25b46b7b7fafdbb92e5
76
+
77
+ BUNDLED WITH
78
+ 4.0.20
data/README.md CHANGED
@@ -84,10 +84,10 @@ For various reasons I’ve not worried too much about trying to maintain backwar
84
84
  2. when using parsed transactions, `in` and `out` are now `paid_in` and `paid_out` respectively
85
85
  3. any use of `fetch(…)` on parsed transactions will need to be replaced with bare function calls (hash accessors—ie `tx[:date]`—will continue to work)
86
86
 
87
- ### Nonbreaking changes
87
+ ### Nonbreaking changes
88
88
 
89
89
  Aside from the new properties added to the main Statement type, the biggest difference is that a statement’s `balance` property is now always specified, whereas it was only specified once a day in V1.x
90
90
 
91
91
  ---
92
92
 
93
- Share and enjoy
93
+ Share and enjoy
@@ -13,7 +13,10 @@ Gem::Specification.new do |spec|
13
13
 
14
14
  spec.version = HsbcPdfStatementParser::VERSION
15
15
  spec.files = `git ls-files`.split($\)
16
+ spec.required_ruby_version = '>= 3.2.3'
16
17
 
17
- spec.add_dependency "pdf-reader", "~> 2.9"
18
- spec.add_dependency "dry-struct", "~> 1.4"
18
+ spec.add_dependency "pdf-reader", "~> 2.16"
19
+ spec.add_dependency "dry-struct", "~> 1.8"
20
+
21
+ spec.add_development_dependency "rufo"
19
22
  end
@@ -4,8 +4,6 @@ module HsbcPdfStatementParser
4
4
 
5
5
  def initialize(filename)
6
6
  @reader = Reader.new(filename)
7
-
8
- # puts @reader.first_page
9
7
  end
10
8
 
11
9
  def parse
@@ -33,7 +31,7 @@ module HsbcPdfStatementParser
33
31
  match = Regexp.new("#{search_string}(.*?)\n", Regexp::IGNORECASE).match(@reader.first_page)
34
32
  raise ParsingError.new("Could not find #{search_string}") if match.nil?
35
33
 
36
- match[1].strip.gsub(",", "").gsub(/\s/, "").to_d
34
+ match[1].strip.gsub(/[\s£,]/, "").to_d
37
35
  end
38
36
 
39
37
  private def get_meta
@@ -26,7 +26,7 @@ module HsbcPdfStatementParser
26
26
 
27
27
  # parse out all the
28
28
  page_data.lines.reduce([]) do |parsed, line|
29
- next parsed if line.strip.empty?
29
+ next parsed if line.strip.length < 2
30
30
 
31
31
  parsed << parse_line(line, column_map, max_line_length)
32
32
  end
@@ -38,7 +38,7 @@ module HsbcPdfStatementParser
38
38
  # scan the content + look for obvious columns
39
39
  input.lines.each do |line|
40
40
  # bounce if there’s no point…
41
- next if line.strip.empty?
41
+ next if line.strip.length < 2
42
42
 
43
43
  # map the state
44
44
  line.split("").each.with_index { |chr, i| state[i] = "X" if chr != " " }
@@ -1,3 +1,3 @@
1
1
  module HsbcPdfStatementParser
2
- VERSION = "2.0.0"
2
+ VERSION = "2.0.2"
3
3
  end
data/treefmt.toml ADDED
@@ -0,0 +1,6 @@
1
+ # One CLI to format the code tree - https://github.com/numtide/treefmt
2
+
3
+ [formatter.rufo]
4
+ command = "rufo"
5
+ options = [ "-x" ]
6
+ includes = [ "*.rb", "*.gemspec" ]
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hsbc_pdf_statement_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Pearse
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2022-02-26 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: pdf-reader
@@ -16,35 +15,51 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: '2.9'
18
+ version: '2.16'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: '2.9'
25
+ version: '2.16'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: dry-struct
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - "~>"
32
31
  - !ruby/object:Gem::Version
33
- version: '1.4'
32
+ version: '1.8'
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - "~>"
39
38
  - !ruby/object:Gem::Version
40
- version: '1.4'
41
- description:
39
+ version: '1.8'
40
+ - !ruby/object:Gem::Dependency
41
+ name: rufo
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
42
54
  email: hello@jonpearse.net
43
55
  executables: []
44
56
  extensions: []
45
57
  extra_rdoc_files: []
46
58
  files:
59
+ - ".gitignore"
60
+ - ".ruby-version"
47
61
  - Gemfile
62
+ - Gemfile.lock
48
63
  - LICENSE.txt
49
64
  - README.md
50
65
  - hsbc_pdf_statement_parser.gemspec
@@ -53,11 +68,11 @@ files:
53
68
  - lib/hsbc_pdf_statement_parser/statement_parser.rb
54
69
  - lib/hsbc_pdf_statement_parser/transaction_parser.rb
55
70
  - lib/hsbc_pdf_statement_parser/version.rb
71
+ - treefmt.toml
56
72
  homepage: https://github.com/jonpearse/hsbc-pdf-statement-parser
57
73
  licenses:
58
74
  - MIT
59
75
  metadata: {}
60
- post_install_message:
61
76
  rdoc_options: []
62
77
  require_paths:
63
78
  - lib
@@ -65,15 +80,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
65
80
  requirements:
66
81
  - - ">="
67
82
  - !ruby/object:Gem::Version
68
- version: '0'
83
+ version: 3.2.3
69
84
  required_rubygems_version: !ruby/object:Gem::Requirement
70
85
  requirements:
71
86
  - - ">="
72
87
  - !ruby/object:Gem::Version
73
88
  version: '0'
74
89
  requirements: []
75
- rubygems_version: 3.2.22
76
- signing_key:
90
+ rubygems_version: 4.0.20
77
91
  specification_version: 4
78
92
  summary: Quick and dirty RubyGem to parse HSBC’s statement PDFs
79
93
  test_files: []