ibandit 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +37 -0
- data/.rubocop.yml +1 -1
- data/.rubocop_todo.yml +1 -1
- data/CHANGELOG.md +4 -0
- data/Gemfile +0 -4
- data/README.md +1 -1
- data/data/german_iban_rules.yml +1096 -1573
- data/data/raw/BLZ2.txt +16028 -17888
- data/ibandit.gemspec +3 -2
- data/lib/ibandit/german_details_converter.rb +21 -0
- data/lib/ibandit/iban.rb +6 -4
- data/lib/ibandit/version.rb +1 -1
- data/spec/fixtures/germany_integration_test_cases.json +21 -21
- data/spec/fixtures/germany_unit_test_cases.json +20 -6
- data/spec/ibandit/local_details_cleaner_spec.rb +1 -1
- data/spec/ibandit/structure_spec.rb +1 -1
- metadata +21 -7
- data/.travis.yml +0 -16
data/ibandit.gemspec
CHANGED
@@ -3,13 +3,14 @@
|
|
3
3
|
require File.expand_path("lib/ibandit/version", __dir__)
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
|
+
gem.add_development_dependency "gc_ruboconfig", "~> 2.12.0"
|
6
7
|
gem.add_development_dependency "nokogiri", "~> 1.6"
|
7
8
|
gem.add_development_dependency "pry", "~> 0.10"
|
8
9
|
gem.add_development_dependency "pry-nav", "~> 0.2"
|
9
10
|
gem.add_development_dependency "rspec", "~> 3.3"
|
10
11
|
gem.add_development_dependency "rspec-its", "~> 1.2"
|
11
|
-
gem.add_development_dependency "
|
12
|
-
gem.add_development_dependency "sax-machine",
|
12
|
+
gem.add_development_dependency "rspec_junit_formatter", "~> 0.4.1"
|
13
|
+
gem.add_development_dependency "sax-machine", "~> 1.3"
|
13
14
|
|
14
15
|
gem.add_runtime_dependency "i18n"
|
15
16
|
|
@@ -957,6 +957,23 @@ module Ibandit
|
|
957
957
|
end
|
958
958
|
end
|
959
959
|
|
960
|
+
# New version of Rule004200 but with another range:
|
961
|
+
# For 10-digit Account Numbers, only the following Account Numbers are
|
962
|
+
# applicable to be issued / created into an IBAN with the
|
963
|
+
# standard-IBAN rule: nnn4400001 to nnn4499999
|
964
|
+
class Rule004201 < Rule004200
|
965
|
+
def converted_details
|
966
|
+
unpadded_account_number = @account_number.gsub(/\A0+/, "")
|
967
|
+
|
968
|
+
if unpadded_account_number.size == 10 &&
|
969
|
+
%w[4400001 4499999].include?(unpadded_account_number.slice(3, 10))
|
970
|
+
{ bank_code: @bank_code, account_number: @account_number }
|
971
|
+
else
|
972
|
+
super
|
973
|
+
end
|
974
|
+
end
|
975
|
+
end
|
976
|
+
|
960
977
|
class Rule004301 < BaseRule
|
961
978
|
def converted_details
|
962
979
|
{ bank_code: "66650085", account_number: @account_number }
|
@@ -1028,6 +1045,10 @@ module Ibandit
|
|
1028
1045
|
end
|
1029
1046
|
end
|
1030
1047
|
|
1048
|
+
class Rule004910 < BaseRule
|
1049
|
+
# Rule 0049 10 is actually about modulus checking, not IBAN construction
|
1050
|
+
end
|
1051
|
+
|
1031
1052
|
class Rule005000 < BaseRule
|
1032
1053
|
def converted_details
|
1033
1054
|
{ bank_code: "28550000", account_number: @account_number }
|
data/lib/ibandit/iban.rb
CHANGED
@@ -225,7 +225,7 @@ module Ibandit
|
|
225
225
|
return unless valid_country_code?
|
226
226
|
return unless structure[:bban_format]
|
227
227
|
|
228
|
-
if bban
|
228
|
+
if bban&.match?(Regexp.new(structure[:bban_format]))
|
229
229
|
true
|
230
230
|
else
|
231
231
|
@errors[:format] = Ibandit.translate(:invalid_format,
|
@@ -238,7 +238,7 @@ module Ibandit
|
|
238
238
|
return unless valid_bank_code_length?
|
239
239
|
return true if structure[:bank_code_length]&.zero?
|
240
240
|
|
241
|
-
if swift_bank_code
|
241
|
+
if swift_bank_code&.match?(Regexp.new(structure[:bank_code_format]))
|
242
242
|
true
|
243
243
|
else
|
244
244
|
@errors[:bank_code] = Ibandit.translate(:is_invalid)
|
@@ -250,7 +250,7 @@ module Ibandit
|
|
250
250
|
return unless valid_branch_code_length?
|
251
251
|
return true unless structure[:branch_code_format]
|
252
252
|
|
253
|
-
if swift_branch_code
|
253
|
+
if swift_branch_code&.match?(Regexp.new(structure[:branch_code_format]))
|
254
254
|
true
|
255
255
|
else
|
256
256
|
@errors[:branch_code] = Ibandit.translate(:is_invalid)
|
@@ -261,7 +261,9 @@ module Ibandit
|
|
261
261
|
def valid_account_number_format?
|
262
262
|
return unless valid_account_number_length?
|
263
263
|
|
264
|
-
if swift_account_number
|
264
|
+
if swift_account_number&.match?(
|
265
|
+
Regexp.new(structure[:account_number_format]),
|
266
|
+
)
|
265
267
|
true
|
266
268
|
else
|
267
269
|
@errors[:account_number] = Ibandit.translate(:is_invalid)
|
data/lib/ibandit/version.rb
CHANGED
@@ -22,15 +22,15 @@
|
|
22
22
|
{ "bank_code": "72020700", "account_number" : "1111111611" }
|
23
23
|
]
|
24
24
|
},
|
25
|
-
{
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
},
|
25
|
+
// {
|
26
|
+
// "convertor": "000300",
|
27
|
+
// "valid": [
|
28
|
+
// { "bank_code": "51010800", "account_number" : "1" }
|
29
|
+
// ],
|
30
|
+
// "invalid": [
|
31
|
+
// { "bank_code": "51010800", "account_number" : "6161604670" }
|
32
|
+
// ]
|
33
|
+
// },
|
34
34
|
{
|
35
35
|
"convertor": "000400",
|
36
36
|
"valid": [
|
@@ -101,12 +101,12 @@
|
|
101
101
|
{"bank_code":"51020000","account_number":"30009963","converted_bank_code":"50020200","converted_account_number":"30009963"}
|
102
102
|
]
|
103
103
|
},
|
104
|
-
{
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
},
|
104
|
+
// {
|
105
|
+
// "convertor": "000900",
|
106
|
+
// "valid": [
|
107
|
+
// {"bank_code":"68351976","account_number":"1116232594","converted_bank_code":"68351557","converted_account_number":"3047232594"}
|
108
|
+
// ]
|
109
|
+
// },
|
110
110
|
{
|
111
111
|
"convertor": "001001",
|
112
112
|
"valid": [
|
@@ -160,11 +160,11 @@
|
|
160
160
|
"valid": [
|
161
161
|
{ "bank_code": "39060180", "account_number": "556", "converted_account_number": "0120440110" }
|
162
162
|
]
|
163
|
-
},
|
164
|
-
{
|
165
|
-
"convertor": "001900",
|
166
|
-
"valid": [
|
167
|
-
{ "bank_code": "50130100", "account_number": "556", "converted_bank_code": "50120383" }
|
168
|
-
]
|
169
163
|
}
|
164
|
+
// {
|
165
|
+
// "convertor": "001900",
|
166
|
+
// "valid": [
|
167
|
+
// { "bank_code": "50130100", "account_number": "556", "converted_bank_code": "50120383" }
|
168
|
+
// ]
|
169
|
+
// }
|
170
170
|
]
|
@@ -136,12 +136,12 @@
|
|
136
136
|
{ "bank_code": "10010010", "account_number" : "556", "converted_account_number": "0120440110" }
|
137
137
|
]
|
138
138
|
},
|
139
|
-
{
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
},
|
139
|
+
// {
|
140
|
+
// "convertor": "001900",
|
141
|
+
// "valid": [
|
142
|
+
// { "bank_code": "10010010", "account_number" : "1234567890", "converted_bank_code": "50120383" }
|
143
|
+
// ]
|
144
|
+
// },
|
145
145
|
{
|
146
146
|
"convertor": "002002",
|
147
147
|
"valid": [
|
@@ -318,6 +318,20 @@
|
|
318
318
|
{ "bank_code": "10010010", "account_number" : "0040400000" },
|
319
319
|
{ "bank_code": "10010010", "account_number" : "0040412000" }
|
320
320
|
]
|
321
|
+
},
|
322
|
+
{
|
323
|
+
"convertor": "004201",
|
324
|
+
"valid": [
|
325
|
+
{ "bank_code": "10010010", "account_number" : "0050462000" },
|
326
|
+
{ "bank_code": "70020001", "account_number" : "0040402000" },
|
327
|
+
{ "bank_code": "70020001", "account_number" : "1004400001" }
|
328
|
+
],
|
329
|
+
"invalid": [
|
330
|
+
{ "bank_code": "10010010", "account_number" : "504620001" },
|
331
|
+
{ "bank_code": "10010010", "account_number" : "0040400000" },
|
332
|
+
{ "bank_code": "10010010", "account_number" : "0040412000" },
|
333
|
+
{ "bank_code": "70020001", "account_number" : "1035400001" }
|
334
|
+
]
|
321
335
|
},
|
322
336
|
{
|
323
337
|
"convertor": "004301",
|
@@ -286,7 +286,7 @@ describe Ibandit::LocalDetailsCleaner do
|
|
286
286
|
|
287
287
|
context "with unsupported account details" do
|
288
288
|
let(:account_number) { "7955791111" }
|
289
|
-
let(:bank_code) { "
|
289
|
+
let(:bank_code) { "99999999" }
|
290
290
|
|
291
291
|
it { is_expected.to eq(local_details_with_swift) }
|
292
292
|
end
|
@@ -9,7 +9,7 @@ describe "structures.yml" do
|
|
9
9
|
structures.each do |country, rules|
|
10
10
|
context country do
|
11
11
|
rules.each do |rule, value|
|
12
|
-
next unless rule
|
12
|
+
next unless rule.to_s.end_with?("_format")
|
13
13
|
|
14
14
|
it "builds #{rule} rule" do
|
15
15
|
expect { Regexp.new(value) }.to_not raise_exception
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ibandit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GoCardless
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: gc_ruboconfig
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.12.0
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.12.0
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: nokogiri
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,19 +95,19 @@ dependencies:
|
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '1.2'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: rspec_junit_formatter
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - "~>"
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
103
|
+
version: 0.4.1
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
110
|
+
version: 0.4.1
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: sax-machine
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,10 +145,10 @@ executables: []
|
|
131
145
|
extensions: []
|
132
146
|
extra_rdoc_files: []
|
133
147
|
files:
|
148
|
+
- ".circleci/config.yml"
|
134
149
|
- ".gitignore"
|
135
150
|
- ".rubocop.yml"
|
136
151
|
- ".rubocop_todo.yml"
|
137
|
-
- ".travis.yml"
|
138
152
|
- CHANGELOG.md
|
139
153
|
- Gemfile
|
140
154
|
- LICENSE
|
@@ -209,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
223
|
- !ruby/object:Gem::Version
|
210
224
|
version: '0'
|
211
225
|
requirements: []
|
212
|
-
rubygems_version: 3.
|
226
|
+
rubygems_version: 3.0.3
|
213
227
|
signing_key:
|
214
228
|
specification_version: 4
|
215
229
|
summary: Convert national banking details into IBANs, and vice-versa.
|