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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e7bc7de3e9adcb4fdfd1e17654464da76bb449f9
4
- data.tar.gz: a24cc6957d898de788b4a6ad132354f80d74ea43
3
+ metadata.gz: a70b2a78642437ceebebeb9cd80d89875b2561f8
4
+ data.tar.gz: 4092dfb11e97cd708fc8f4c36ec6e0a5a9e66aed
5
5
  SHA512:
6
- metadata.gz: d8a8a851d01e0c0cb07bb174f6e8e3b6c799ffe63a4ae5025250a9f26a796097f023f244a55ed08c84ef47a8db81bb2b1629fd5d90eb38db9147c9b148a9f2e5
7
- data.tar.gz: 77fcfc7b8f87354adc515781c1b88466b04d0f603cc04f85a815fba843af7a89c391fdb82bae9f32ef3a396b9e298bbbf4908ce20c9a20a0c1ec80515f85b5e9
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', 'POSB Plus', 'HSBC', 'Standard Chartered', 'CITIBANK', 'Malayan Banking Berhad']
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', account: '123456789')
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 and resolved account number, which can be different from supplied account number
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
@@ -1,3 +1,3 @@
1
1
  module SingaporeBankCodes
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -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::BANKS}" unless BankCodeResolver::BANKS.include?(@name)
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
- BankCodeResolver::BANKS
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
 
@@ -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
@@ -3,6 +3,10 @@ class CITIBANK < SingaporeBankCode::BankAccount
3
3
  '7214'
4
4
  end
5
5
 
6
+ def swift_code
7
+ 'CITISGSGGCB'
8
+ end
9
+
6
10
  def reference_hash_collection
7
11
  {
8
12
  '001' => 'Shenton Way - IB',
data/lib/banks/dbs.rb CHANGED
@@ -7,6 +7,10 @@ class DBS < SingaporeBankCode::BankAccount
7
7
  '7171'
8
8
  end
9
9
 
10
+ def swift_code
11
+ 'DBSSSGSGXXX'
12
+ end
13
+
10
14
  def reference_hash_collection
11
15
  {
12
16
  '001' => 'DBS Shenton Way',
data/lib/banks/hsbc.rb CHANGED
@@ -4,6 +4,10 @@ class HSBC < SingaporeBankCode::BankAccount
4
4
  '7232'
5
5
  end
6
6
 
7
+ def swift_code
8
+ 'HSBCSGSGXXX'
9
+ end
10
+
7
11
  def resolved_number
8
12
  @number[3..-1]
9
13
  end
data/lib/banks/ocbc.rb CHANGED
@@ -2,9 +2,9 @@ class OCBC < SingaporeBankCode::BankAccount
2
2
  def bank_code
3
3
  '7339'
4
4
  end
5
-
6
- def resolved_number
7
- @number[3..-1]
5
+
6
+ def swift_code
7
+ 'OCBCSGSGXXX'
8
8
  end
9
9
 
10
10
  def reference_hash_collection
data/lib/banks/posb.rb CHANGED
@@ -7,6 +7,10 @@ class POSB < SingaporeBankCode::BankAccount
7
7
  '7171'
8
8
  end
9
9
 
10
+ def swift_code
11
+ 'DBSSSGSGXXX'
12
+ end
13
+
10
14
  def branch_code
11
15
  if @number.to_s.length == 9
12
16
  '081'
@@ -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
- # 'FEB'
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.1
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-22 00:00:00.000000000 Z
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
@@ -1,6 +0,0 @@
1
- class POSBPLUS < SingaporeBankCode::BankAccount
2
-
3
- def bank_code
4
- '7171'
5
- end
6
- end