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 +4 -4
- data/.gitignore +5 -0
- data/.ruby-version +1 -0
- data/Gemfile.lock +78 -0
- data/README.md +2 -2
- data/hsbc_pdf_statement_parser.gemspec +5 -2
- data/lib/hsbc_pdf_statement_parser/statement_parser.rb +1 -3
- data/lib/hsbc_pdf_statement_parser/transaction_parser.rb +2 -2
- data/lib/hsbc_pdf_statement_parser/version.rb +1 -1
- data/treefmt.toml +6 -0
- metadata +26 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 82491dbc1432d68cae81dfb231540cae6cf7d97f9887d12acf21ab0ad035cc96
|
|
4
|
+
data.tar.gz: a49a29e6a3e0daafd3ad264562dce68a787be372cb3f54cf7cc343d0f8d96efd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9461c4dca218916b524cf8eaf14c80ff1fb2e10d0087dfc95499955937854fcf70def7a032622368bc5ecfdd8b30031d0344c06f7738d2db9846a12d0f9fbfe9
|
|
7
|
+
data.tar.gz: fbcfb44820d054c890b5a56a300c13d70747faf84fddbd4c6d348a5fa8eb721cf464b98faf56f4ce483b47ac1ab354d20358eec6a5fe766da7f530777c0b2290
|
data/.gitignore
ADDED
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
|
-
###
|
|
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.
|
|
18
|
-
spec.add_dependency "dry-struct", "~> 1.
|
|
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(
|
|
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.
|
|
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.
|
|
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 != " " }
|
data/treefmt.toml
ADDED
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.
|
|
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:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
41
|
-
|
|
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:
|
|
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:
|
|
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: []
|