banktools-se 2.3.0 → 2.4.0
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/README.markdown +2 -2
- data/lib/banktools-se/ocr.rb +3 -2
- data/lib/banktools-se/version.rb +1 -1
- data/spec/ocr_spec.rb +12 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e925fd3ed8cc9466d3349621bbd04324592ef67
|
4
|
+
data.tar.gz: 10ae31638c8fb1951f00c9faec6c5d2a14b9ddd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f765f7fca94f5590d5b4a123bb020d4ebf3b42d46d5f6e20343544faab6ae80df0dfcbcb17c0dc93a2ea0533391ec00a91b756d58d9fd05c3fecea63aca86a3a
|
7
|
+
data.tar.gz: d19a541703158bf3671ab61f6d44f1af364d23d44c907c96f4d2b14fd15c203af7f63df8b59129d63a2b3dd9d1af771f276f44ecf8924bfe50c942a8708a8165
|
data/README.markdown
CHANGED
@@ -45,10 +45,10 @@ Inspired by [iulianu/iban-tools](https://github.com/iulianu/iban-tools). Please
|
|
45
45
|
|
46
46
|
# This feature is intended to try to find all OCR numbers in a noisy bank statement string.
|
47
47
|
# By design it may find too many numbers (e.g. valid substrings of other numbers), so you should check results against actual outstanding invoices.
|
48
|
-
# By default, it excludes OCRs shorter than 4 digits, but this limit can be specified per below.
|
48
|
+
# By default, it excludes OCRs shorter than 4 digits and longer than 19 digits, but this limit can be specified per below.
|
49
49
|
BankTools::SE::OCR.find_all_in_string("OCR1230 and ref4564 and 7890") # => [ "1230", "4564" ]
|
50
50
|
BankTools::SE::OCR.find_all_in_string("1230 and 123067", length_digit: true, pad: "0") # => [ "123067" ]
|
51
|
-
BankTools::SE::OCR.find_all_in_string("00 and 18", min_length: 2) # => [ "00", "18" ]
|
51
|
+
BankTools::SE::OCR.find_all_in_string("00 and 18 and 1230", min_length: 2, max_length: 3) # => [ "00", "18" ]
|
52
52
|
|
53
53
|
# Plusgiro
|
54
54
|
|
data/lib/banktools-se/ocr.rb
CHANGED
@@ -64,13 +64,14 @@ module BankTools
|
|
64
64
|
ocr[0...-digits_to_chop]
|
65
65
|
end
|
66
66
|
|
67
|
-
|
67
|
+
# max_length is 19 because that's the longest allowed integer by default in a Postgres integer column with Ruby on Rails. So attempting some queries with longer OCRs may cause exceptions.
|
68
|
+
def self.find_all_in_string(string, length_digit: false, pad: "", min_length: 4, max_length: 19)
|
68
69
|
expanded_string = string + " " + string.gsub("\n", "") + " " + string.gsub(";", "")
|
69
70
|
|
70
71
|
numbers = expanded_string.scan(/\d+/)
|
71
72
|
|
72
73
|
expanded_numbers = with_numbers_found_by_removing_prefix_and_postfix(numbers).
|
73
|
-
reject { |n| n.length < min_length }
|
74
|
+
reject { |n| n.length < min_length || n.length > max_length }
|
74
75
|
|
75
76
|
expanded_numbers.select { |candidate|
|
76
77
|
begin
|
data/lib/banktools-se/version.rb
CHANGED
data/spec/ocr_spec.rb
CHANGED
@@ -120,6 +120,18 @@ describe BankTools::SE::OCR do
|
|
120
120
|
expect(BankTools::SE::OCR.find_all_in_string("1234", min_length: 2)).to eq [ "34" ]
|
121
121
|
end
|
122
122
|
|
123
|
+
it "lets you configure the accepted OCR max_length" do
|
124
|
+
ocr_length_19 = "1234567890123456785"
|
125
|
+
ocr_length_20 = "12345678901234567894"
|
126
|
+
string = "#{ocr_length_19} #{ocr_length_20}"
|
127
|
+
|
128
|
+
# Default max_length is 19.
|
129
|
+
expect(BankTools::SE::OCR.find_all_in_string(string)).to include ocr_length_19
|
130
|
+
expect(BankTools::SE::OCR.find_all_in_string(string)).not_to include ocr_length_20
|
131
|
+
|
132
|
+
expect(BankTools::SE::OCR.find_all_in_string(string, max_length: 20)).to include ocr_length_19, ocr_length_20
|
133
|
+
end
|
134
|
+
|
123
135
|
it "excludes duplicates" do
|
124
136
|
expect(BankTools::SE::OCR.find_all_in_string("1230 1230 4564")).to eq [ "1230", "4564" ]
|
125
137
|
end
|