banktools-se 0.2.0 → 0.3.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b0b808f0833e1ba8e7768e6e320d431a6aaa4f93
4
+ data.tar.gz: 4e1f2304d9c70caa71e7c7268c367a02fe1bebbe
5
+ SHA512:
6
+ metadata.gz: d6560518065f0eb8f9c1e5cc9926e2ce8fa5fd3d811f14a6a1a6d26db11f8654bf25307819686beae722bf869dddee2865db31f64c7d0a480f10c56961684513
7
+ data.tar.gz: 3657fde6ea4c9a9232041ffd94f2f6c13af3d56de15fb9fd99b2d6aa91de9e4a639b6ec7ead22e738c9a9b3bc76729f71b92b696f559179318cc4947d51c83cc
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
data/README.markdown CHANGED
@@ -1,5 +1,7 @@
1
1
  # Swedish bank tools
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/barsoom/banktools-se.png)](http://travis-ci.org/barsoom/banktools-se)
4
+
3
5
  Ruby gem to validate, normalize/prettify and to some extent interpret
4
6
 
5
7
  * Swedish bank account numbers
@@ -90,7 +92,6 @@ to install it.
90
92
 
91
93
  Possible improvements to make:
92
94
 
93
- * Handle [Sparbanken zerofill](http://www.danskebank.se/sv-se/eBanking-content/text-pages/Pages/Bankliste2.aspx).
94
95
  * Luhn validation based on [BGC docs](http://www.bgc.se/upload/Gemensamt/Trycksaker/Manualer/BG910.pdf).
95
96
 
96
97
 
data/banktools-se.gemspec CHANGED
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
18
  s.require_paths = ["lib"]
19
19
 
20
+ s.add_development_dependency "rake"
20
21
  s.add_development_dependency "rspec"
21
22
  s.add_development_dependency "guard"
22
23
  s.add_development_dependency "guard-rspec"
@@ -25,7 +25,7 @@ module BankTools
25
25
  6000..6999 => { :name => "Handelsbanken", :serial_number_length => 9 },
26
26
  7000..7999 => { :name => "Swedbank" },
27
27
  # Can be fewer chars but must be zero-filled, so let's call it 10.
28
- 8000..8999 => { :name => "Swedbank", :serial_number_length => 10, :checksum_for_clearing => true },
28
+ 8000..8999 => { :name => "Swedbank", :serial_number_length => 10, :checksum_for_clearing => true, :zerofill => true },
29
29
  9020..9029 => { :name => "Länsförsäkringar Bank" },
30
30
  9040..9049 => { :name => "Citibank" },
31
31
  9060..9069 => { :name => "Länsförsäkringar Bank" },
@@ -42,13 +42,13 @@ module BankTools
42
42
  9260..9269 => { :name => "Den Norske Bank" },
43
43
  9270..9279 => { :name => "ICA Banken" },
44
44
  9280..9289 => { :name => "Resurs Bank" },
45
- 9300..9349 => { :name => "Sparbanken Öresund", :serial_number_length => 10 },
45
+ 9300..9349 => { :name => "Sparbanken Öresund", :serial_number_length => 10, :zerofill => true },
46
46
  9400..9449 => { :name => "Forex Bank" },
47
47
  9460..9469 => { :name => "GE Money Bank" },
48
48
  9470..9479 => { :name => "Fortis Bank" },
49
49
  9500..9549 => { :name => "Nordea/Plusgirot", :serial_number_length => 1..10 },
50
50
  9550..9569 => { :name => "Avanza Bank" },
51
- 9570..9579 => { :name => "Sparbanken Syd", :serial_number_length => 10 },
51
+ 9570..9579 => { :name => "Sparbanken Syd", :serial_number_length => 10, :zerofill => true},
52
52
  9960..9969 => { :name => "Nordea/Plusgirot", :serial_number_length => 1..10 },
53
53
  }
54
54
 
@@ -98,7 +98,8 @@ module BankTools
98
98
  end
99
99
 
100
100
  def serial_number
101
- digits.slice(clearing_number_length..-1) || ""
101
+ number = digits.slice(clearing_number_length..-1) || ""
102
+ zerofill? ? "%.#{bank_data[:serial_number_length]}d" % number : number
102
103
  end
103
104
 
104
105
  private
@@ -144,6 +145,10 @@ module BankTools
144
145
  number.to_s.gsub(/\D/, '')
145
146
  end
146
147
 
148
+ def zerofill?
149
+ !!bank_data[:zerofill]
150
+ end
151
+
147
152
  end
148
153
  end
149
154
  end
@@ -1,5 +1,5 @@
1
1
  module BankTools
2
2
  module SE
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
data/spec/account_spec.rb CHANGED
@@ -13,13 +13,13 @@ describe BankTools::SE::Account do
13
13
 
14
14
  it "should be true with no errors" do
15
15
  account = BankTools::SE::Account.new("foo")
16
- account.stub!(:errors).and_return([])
16
+ account.stub(:errors).and_return([])
17
17
  account.should be_valid
18
18
  end
19
19
 
20
20
  it "should be false with errors" do
21
21
  account = BankTools::SE::Account.new("foo")
22
- account.stub!(:errors).and_return([:error])
22
+ account.stub(:errors).and_return([:error])
23
23
  account.should_not be_valid
24
24
  end
25
25
 
@@ -78,6 +78,12 @@ describe BankTools::SE::Account do
78
78
  BankTools::SE::Account.new("11007").errors.should include(BankTools::SE::Errors::TOO_SHORT)
79
79
  end
80
80
 
81
+ it "should not include :too_short for Swedbank/Sparbanker numbers that can be zerofilled" do
82
+ BankTools::SE::Account.new("8000-2-00000000").errors.should_not include(BankTools::SE::Errors::TOO_SHORT)
83
+ BankTools::SE::Account.new("9300-2-00000000").errors.should_not include(BankTools::SE::Errors::TOO_SHORT)
84
+ BankTools::SE::Account.new("9570-2-00000000").errors.should_not include(BankTools::SE::Errors::TOO_SHORT)
85
+ end
86
+
81
87
  it "should include :too_long for numbers longer than the bank allows" do
82
88
  BankTools::SE::Account.new("1100000000007").errors.should include(BankTools::SE::Errors::TOO_LONG)
83
89
  end
@@ -161,6 +167,11 @@ describe BankTools::SE::Account do
161
167
  account = BankTools::SE::Account.new(" 1-2-3 ").normalize.should == " 1-2-3 "
162
168
  end
163
169
 
170
+ it "should prepend zeroes to the serial number if necessary" do
171
+ BankTools::SE::Account.new("8000-2-80000003").normalize.should == "8000-2-0080000003"
172
+ BankTools::SE::Account.new("8000-2-8000000003").normalize.should == "8000-2-8000000003"
173
+ end
174
+
164
175
  end
165
176
 
166
177
  end
@@ -11,13 +11,13 @@ describe BankTools::SE::Bankgiro do
11
11
 
12
12
  it "should be true with no errors" do
13
13
  account = BankTools::SE::Bankgiro.new("foo")
14
- account.stub!(:errors).and_return([])
14
+ account.stub(:errors).and_return([])
15
15
  account.should be_valid
16
16
  end
17
17
 
18
18
  it "should be false with errors" do
19
19
  account = BankTools::SE::Bankgiro.new("foo")
20
- account.stub!(:errors).and_return([:error])
20
+ account.stub(:errors).and_return([:error])
21
21
  account.should_not be_valid
22
22
  end
23
23
 
@@ -11,13 +11,13 @@ describe BankTools::SE::Plusgiro do
11
11
 
12
12
  it "should be true with no errors" do
13
13
  account = BankTools::SE::Plusgiro.new("foo")
14
- account.stub!(:errors).and_return([])
14
+ account.stub(:errors).and_return([])
15
15
  account.should be_valid
16
16
  end
17
17
 
18
18
  it "should be false with errors" do
19
19
  account = BankTools::SE::Plusgiro.new("foo")
20
- account.stub!(:errors).and_return([:error])
20
+ account.stub(:errors).and_return([:error])
21
21
  account.should_not be_valid
22
22
  end
23
23
 
metadata CHANGED
@@ -1,49 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: banktools-se
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Henrik Nyh
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-05-10 00:00:00.000000000 Z
11
+ date: 2013-12-13 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: rspec
16
- requirement: &70242598104220 !ruby/object:Gem::Requirement
17
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
18
30
  requirements:
19
31
  - - ! '>='
20
32
  - !ruby/object:Gem::Version
21
33
  version: '0'
22
34
  type: :development
23
35
  prerelease: false
24
- version_requirements: *70242598104220
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
25
41
  - !ruby/object:Gem::Dependency
26
42
  name: guard
27
- requirement: &70242598103800 !ruby/object:Gem::Requirement
28
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
29
44
  requirements:
30
45
  - - ! '>='
31
46
  - !ruby/object:Gem::Version
32
47
  version: '0'
33
48
  type: :development
34
49
  prerelease: false
35
- version_requirements: *70242598103800
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
36
55
  - !ruby/object:Gem::Dependency
37
56
  name: guard-rspec
38
- requirement: &70242598103380 !ruby/object:Gem::Requirement
39
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
40
58
  requirements:
41
59
  - - ! '>='
42
60
  - !ruby/object:Gem::Version
43
61
  version: '0'
44
62
  type: :development
45
63
  prerelease: false
46
- version_requirements: *70242598103380
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
47
69
  description:
48
70
  email:
49
71
  - henrik@barsoom.se
@@ -52,6 +74,7 @@ extensions: []
52
74
  extra_rdoc_files: []
53
75
  files:
54
76
  - .gitignore
77
+ - .travis.yml
55
78
  - Gemfile
56
79
  - Guardfile
57
80
  - README.markdown
@@ -71,27 +94,26 @@ files:
71
94
  - spec/utils_spec.rb
72
95
  homepage: ''
73
96
  licenses: []
97
+ metadata: {}
74
98
  post_install_message:
75
99
  rdoc_options: []
76
100
  require_paths:
77
101
  - lib
78
102
  required_ruby_version: !ruby/object:Gem::Requirement
79
- none: false
80
103
  requirements:
81
104
  - - ! '>='
82
105
  - !ruby/object:Gem::Version
83
106
  version: '0'
84
107
  required_rubygems_version: !ruby/object:Gem::Requirement
85
- none: false
86
108
  requirements:
87
109
  - - ! '>='
88
110
  - !ruby/object:Gem::Version
89
111
  version: '0'
90
112
  requirements: []
91
113
  rubyforge_project: banktools-se
92
- rubygems_version: 1.8.5
114
+ rubygems_version: 2.0.3
93
115
  signing_key:
94
- specification_version: 3
116
+ specification_version: 4
95
117
  summary: Validate and normalize Swedish bank account numbers, plusgiro and bankgiro.
96
118
  test_files:
97
119
  - spec/account_spec.rb
@@ -99,3 +121,4 @@ test_files:
99
121
  - spec/plusgiro_spec.rb
100
122
  - spec/spec_helper.rb
101
123
  - spec/utils_spec.rb
124
+ has_rdoc: