SingaporeBankCodes 0.0.1 → 0.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/README.md +3 -3
- data/SingaporeBankCodes-0.0.1.gem +0 -0
- data/lib/SingaporeBankCodes/version.rb +1 -1
- data/lib/SingaporeBankCodes.rb +5 -6
- data/lib/banks/bank_account.rb +9 -1
- data/lib/banks/citibank.rb +4 -0
- data/lib/banks/dbs.rb +4 -0
- data/lib/banks/hsbc.rb +4 -0
- data/lib/banks/ocbc.rb +3 -3
- data/lib/banks/posb.rb +4 -0
- data/lib/banks/standard_chartered.rb +4 -4
- data/spec/bank_code_resolver_spec.rb +1 -2
- metadata +3 -3
- data/lib/banks/posb_plus.rb +0 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a70b2a78642437ceebebeb9cd80d89875b2561f8
|
|
4
|
+
data.tar.gz: 4092dfb11e97cd708fc8f4c36ec6e0a5a9e66aed
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a7bcefbf37060fe936dc33d3f6f6a141e7cda2431305f9b69b855a033f5420260d1a4efecaf2e615d5f751c75d00f15ef0b56079dd846ba68e2e197a871215bb
|
|
7
|
+
data.tar.gz: b18ffebac40acc3d111c2c8acf2b51283cc5fe0e7dcfd47b8945b722af65abc5649200191eea9cb23943a3737dfb4b70cb58b8a726a133062e3ff4f3e38df4ce
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# SingaporeBankCodes
|
|
2
2
|
This gem allows you to provide a bank name and account number, and will generate the branch code, bank code, and branch name. Singapore banks only. Currently serviced banks are:
|
|
3
|
-
['OCBC', 'DBS', 'UOB', 'FEB', 'POSB', '
|
|
3
|
+
['OCBC', 'DBS', 'UOB', 'FEB', 'POSB', 'HSBC', 'Standard Chartered', 'CITIBANK', 'Malayan Banking Berhad']
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -20,9 +20,9 @@ Or install it yourself as:
|
|
|
20
20
|
|
|
21
21
|
## Usage
|
|
22
22
|
```ruby
|
|
23
|
-
resolver = BankCodeResolver.new(name: 'POSB',
|
|
23
|
+
resolver = BankCodeResolver.new(name: 'POSB', number: '123456789')
|
|
24
24
|
resolver.get_result
|
|
25
|
-
#returns a hash with keys bank_code, branch_code, branch_name
|
|
25
|
+
#returns a hash with keys bank_code, branch_code, branch_name resolved account number and swift code, which can be different from supplied account number
|
|
26
26
|
BankCodeResolver.bank_options #for possible bank names
|
|
27
27
|
```
|
|
28
28
|
|
|
Binary file
|
data/lib/SingaporeBankCodes.rb
CHANGED
|
@@ -5,36 +5,35 @@ require_relative './banks/hsbc'
|
|
|
5
5
|
require_relative './banks/malayan_banking_berhad'
|
|
6
6
|
require_relative './banks/ocbc'
|
|
7
7
|
require_relative './banks/posb'
|
|
8
|
-
require_relative './banks/posb_plus'
|
|
9
8
|
require_relative './banks/uob/uob_branch_codes'
|
|
10
9
|
require_relative './banks/uob/uob'
|
|
11
10
|
require_relative './banks/standard_chartered'
|
|
12
11
|
|
|
13
12
|
|
|
14
13
|
class BankCodeResolver
|
|
15
|
-
BANKS = ['OCBC', 'DBS', 'UOB', 'FEB', 'POSB', 'POSB Plus', 'HSBC', 'Standard Chartered', 'CITIBANK', 'Malayan Banking Berhad']
|
|
16
14
|
attr_accessor :name, :number
|
|
17
15
|
|
|
18
16
|
def initialize(args)
|
|
19
|
-
@name = args.fetch(:name)
|
|
17
|
+
@name = args.fetch(:name).delete(' ').upcase
|
|
20
18
|
@number = args.fetch(:number)
|
|
21
|
-
raise ArgumentError.new "Name(#{@name}) needs to be one of #{BankCodeResolver
|
|
19
|
+
raise ArgumentError.new "Name(#{@name}) needs to be one of #{BankCodeResolver.bank_options}" unless BankCodeResolver.bank_options.include?(@name)
|
|
22
20
|
@bank_account = Object.const_get(@name.delete(' ').upcase).new(@number)
|
|
23
21
|
min_length = @bank_account.min_length
|
|
24
22
|
raise ArgumentError.new "Account number needs to be at least #{min_length}" unless (@number.to_s.length >= min_length)
|
|
25
23
|
end
|
|
26
24
|
|
|
27
25
|
def self.bank_options
|
|
28
|
-
|
|
26
|
+
SingaporeBankCode::BankAccount.decendants
|
|
29
27
|
end
|
|
30
28
|
|
|
31
29
|
def get_result
|
|
32
|
-
bank_code, branch_code, branch_name, resolved_number = @bank_account.resolve!
|
|
30
|
+
bank_code, branch_code, branch_name, resolved_number, swift_code = @bank_account.resolve!
|
|
33
31
|
{
|
|
34
32
|
'bank_account' => bank_code,
|
|
35
33
|
'branch_code' => branch_code,
|
|
36
34
|
'branch_name' => branch_name,
|
|
37
35
|
'resolved_account_number' => resolved_number,
|
|
36
|
+
'swift_code' => swift_code
|
|
38
37
|
}
|
|
39
38
|
end
|
|
40
39
|
|
data/lib/banks/bank_account.rb
CHANGED
|
@@ -2,6 +2,10 @@ module SingaporeBankCode
|
|
|
2
2
|
class BankAccount
|
|
3
3
|
attr_accessor :number
|
|
4
4
|
|
|
5
|
+
def self.decendants
|
|
6
|
+
ObjectSpace.each_object(Class).select { |klass| klass < self }.map(&:to_s)
|
|
7
|
+
end
|
|
8
|
+
|
|
5
9
|
def initialize number
|
|
6
10
|
@number = number
|
|
7
11
|
end
|
|
@@ -22,8 +26,12 @@ module SingaporeBankCode
|
|
|
22
26
|
@number
|
|
23
27
|
end
|
|
24
28
|
|
|
29
|
+
def swift_code
|
|
30
|
+
'N/A'
|
|
31
|
+
end
|
|
32
|
+
|
|
25
33
|
def resolve!
|
|
26
|
-
[bank_code, branch_code, branch_name, resolved_number]
|
|
34
|
+
[bank_code, branch_code, branch_name, resolved_number, swift_code]
|
|
27
35
|
end
|
|
28
36
|
end
|
|
29
37
|
end
|
data/lib/banks/citibank.rb
CHANGED
data/lib/banks/dbs.rb
CHANGED
data/lib/banks/hsbc.rb
CHANGED
data/lib/banks/ocbc.rb
CHANGED
data/lib/banks/posb.rb
CHANGED
|
@@ -3,14 +3,14 @@ class STANDARDCHARTERED < SingaporeBankCode::BankAccount
|
|
|
3
3
|
10
|
|
4
4
|
end
|
|
5
5
|
|
|
6
|
-
def resolved_number
|
|
7
|
-
@number
|
|
8
|
-
end
|
|
9
|
-
|
|
10
6
|
def bank_code
|
|
11
7
|
'7144'
|
|
12
8
|
end
|
|
13
9
|
|
|
10
|
+
def swift_code
|
|
11
|
+
'SCBLSGSGXXX'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
14
|
def branch_code
|
|
15
15
|
'0' + @number[0..1].to_s
|
|
16
16
|
end
|
|
@@ -5,8 +5,7 @@ describe BankCodeResolver do
|
|
|
5
5
|
|
|
6
6
|
describe 'Valid parameters' do
|
|
7
7
|
context 'with valid bank' do
|
|
8
|
-
|
|
9
|
-
let(:name) {['OCBC', 'DBS', 'UOB', 'POSB', 'POSB Plus', 'HSBC', 'Standard Chartered', 'CITIBANK', 'Malayan Banking Berhad'].sample}
|
|
8
|
+
let(:name) {['OCBC', 'DBS', 'UOB', 'POSB', 'HSBC', 'Standard Chartered', 'CITIBANK', 'Malayan Banking Berhad'].sample}
|
|
10
9
|
let(:number) {1234567890}
|
|
11
10
|
it 'should not raise any error' do
|
|
12
11
|
expect(subject).to be
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: SingaporeBankCodes
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sherwyn Goh
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-04-
|
|
11
|
+
date: 2015-04-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -78,6 +78,7 @@ files:
|
|
|
78
78
|
- LICENSE.txt
|
|
79
79
|
- README.md
|
|
80
80
|
- Rakefile
|
|
81
|
+
- SingaporeBankCodes-0.0.1.gem
|
|
81
82
|
- SingaporeBankCodes.gemspec
|
|
82
83
|
- lib/SingaporeBankCodes.rb
|
|
83
84
|
- lib/SingaporeBankCodes/version.rb
|
|
@@ -88,7 +89,6 @@ files:
|
|
|
88
89
|
- lib/banks/malayan_banking_berhad.rb
|
|
89
90
|
- lib/banks/ocbc.rb
|
|
90
91
|
- lib/banks/posb.rb
|
|
91
|
-
- lib/banks/posb_plus.rb
|
|
92
92
|
- lib/banks/standard_chartered.rb
|
|
93
93
|
- lib/banks/uob/uob.rb
|
|
94
94
|
- lib/banks/uob/uob_branch_codes.rb
|