banktools-de 0.0.5 → 0.0.6
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.md +11 -5
- data/lib/bank_tools/de/blz.rb +11 -7
- data/lib/bank_tools/de/version.rb +1 -1
- data/spec/blz_spec.rb +8 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52950f7fe73d77a9ff04ebac2e51f0c796cc440d
|
4
|
+
data.tar.gz: 8a3cbb75535461c2b59d9ae73099d96c462ff23d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 873d235ac161487915dff8416ef6838323990bc9a2b510f3a295454dda7f8a5d8e0aac7a7558c8e7400ac50cc4ea15fb28c321c056e0de27dd955ffc1bd7ff1a
|
7
|
+
data.tar.gz: cd4f307835992c85d3e3b9e064ee754e656fda1bf6d5efc4f381408643b074b4540ba5a81c60519c55e212549ee9fd9901f5495d4765690dba5450cb0f7f854f
|
data/README.md
CHANGED
@@ -16,11 +16,12 @@ If we got anything wrong, please file an issue or contribute a fix yourself.
|
|
16
16
|
blz.valid? # => true
|
17
17
|
blz.errors # => []
|
18
18
|
blz.bank_name # => "Deutsche Bank PGK Berlin"
|
19
|
+
BankTools::DE::BLZ.blz_to_bank_name # => { "10070024" => "Deutsche Bank PGK Berlin", … }
|
19
20
|
|
20
21
|
bad_blz = BankTools::DE::BLZ.new("1X")
|
21
22
|
bad_blz.normalize # => "1X"
|
22
23
|
bad_blz.valid? # => false
|
23
|
-
bad_blz.errors # => [
|
24
|
+
bad_blz.errors # => [:too_short, :invalid_characters]
|
24
25
|
blz.bank_name # => nil
|
25
26
|
|
26
27
|
# Account
|
@@ -33,14 +34,13 @@ If we got anything wrong, please file an issue or contribute a fix yourself.
|
|
33
34
|
bad_account = BankTools::DE::Account.new("1")
|
34
35
|
bad_account.normalize # => "1"
|
35
36
|
bad_account.valid? # => false
|
36
|
-
bad_account.errors # => [
|
37
|
+
bad_account.errors # => [:too_short]
|
37
38
|
|
38
39
|
|
39
40
|
## Tests
|
40
41
|
|
41
42
|
bundle
|
42
|
-
rspec
|
43
|
-
# or: rake
|
43
|
+
rspec # or: rake
|
44
44
|
|
45
45
|
|
46
46
|
## Update BLZ data
|
@@ -58,7 +58,7 @@ providing a URL for the latest unpacked XLSX version of the data.
|
|
58
58
|
|
59
59
|
You can provide a local path if you want.
|
60
60
|
|
61
|
-
This will overwrite the
|
61
|
+
This will overwrite the data file in the code repository.
|
62
62
|
|
63
63
|
Updates appear to ship for periods of 3 months, provided the month before a period starts. We've seen these periods:
|
64
64
|
* 2013-09-09 - 2013-12-08
|
@@ -80,10 +80,16 @@ Or install it yourself as:
|
|
80
80
|
$ gem install banktools-de
|
81
81
|
|
82
82
|
|
83
|
+
## TODO
|
84
|
+
|
85
|
+
* [Checksum validation](http://www.bundesbank.de/Navigation/DE/Kerngeschaeftsfelder/Unbarer_Zahlungsverkehr/Pruefzifferberechnung/pruefzifferberechnung.html)
|
86
|
+
|
87
|
+
|
83
88
|
## Also see
|
84
89
|
|
85
90
|
* [BankTools::SE (Swedish)](https://github.com/barsoom/banktools-se)
|
86
91
|
* [iban-tools](https://github.com/iulianu/iban-tools)
|
92
|
+
* [Konto API online service](https://www.kontoapi.de)
|
87
93
|
|
88
94
|
|
89
95
|
## Credits and license
|
data/lib/bank_tools/de/blz.rb
CHANGED
@@ -10,11 +10,15 @@ require "yaml"
|
|
10
10
|
module BankTools
|
11
11
|
module DE
|
12
12
|
class BLZ
|
13
|
-
|
14
|
-
|
13
|
+
LENGTH = 8
|
14
|
+
BLZ_TO_BANK_NAME_PATH = File.join(BankTools::DE.data_dir, "blz_to_name.yml")
|
15
15
|
|
16
16
|
pattr_initialize :original_value
|
17
17
|
|
18
|
+
def self.blz_to_bank_name
|
19
|
+
@blz_to_bank_name ||= YAML.load_file(BLZ_TO_BANK_NAME_PATH).fetch(:data)
|
20
|
+
end
|
21
|
+
|
18
22
|
def normalize
|
19
23
|
if compacted_value.match(/\A(\d{3})(\d{3})(\d{2})\z/)
|
20
24
|
"#$1 #$2 #$3"
|
@@ -29,20 +33,20 @@ module BankTools
|
|
29
33
|
|
30
34
|
def errors
|
31
35
|
errors = []
|
32
|
-
errors << Errors::TOO_SHORT if compacted_value.length <
|
33
|
-
errors << Errors::TOO_LONG if compacted_value.length >
|
36
|
+
errors << Errors::TOO_SHORT if compacted_value.length < LENGTH
|
37
|
+
errors << Errors::TOO_LONG if compacted_value.length > LENGTH
|
34
38
|
errors << Errors::INVALID_CHARACTERS if compacted_value.match(/\D/)
|
35
39
|
errors
|
36
40
|
end
|
37
41
|
|
38
42
|
def bank_name
|
39
|
-
|
43
|
+
blz_to_bank_name.fetch(compacted_value, nil)
|
40
44
|
end
|
41
45
|
|
42
46
|
private
|
43
47
|
|
44
|
-
def
|
45
|
-
|
48
|
+
def blz_to_bank_name
|
49
|
+
self.class.blz_to_bank_name
|
46
50
|
end
|
47
51
|
|
48
52
|
def compacted_value
|
data/spec/blz_spec.rb
CHANGED
@@ -56,3 +56,11 @@ describe BankTools::DE::BLZ, "#bank_name" do
|
|
56
56
|
expect(BankTools::DE::BLZ.new("X").bank_name).to be_nil
|
57
57
|
end
|
58
58
|
end
|
59
|
+
|
60
|
+
describe BankTools::DE::BLZ, ".blz_to_bank_name" do
|
61
|
+
it "returns a hash mapping BLZs to bank names" do
|
62
|
+
actual = BankTools::DE::BLZ.blz_to_bank_name
|
63
|
+
expect(actual).to be_a(Hash)
|
64
|
+
expect(actual["10000000"]).to eq "BBk Berlin"
|
65
|
+
end
|
66
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: banktools-de
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henrik Nyh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: attr_extras
|