codecal 0.3.1 → 0.3.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: 45057d12f1a5354a04806e2ad76421aeda89f257
4
- data.tar.gz: 53f3855f2210928a72621d6ed2ce4b86715bedee
3
+ metadata.gz: fa086735af607990a2b230aa35f0ee58ef5b0d09
4
+ data.tar.gz: 0652ce71e4e40f2674492ae8e1e8a2149ab45ca7
5
5
  SHA512:
6
- metadata.gz: 7e60a6a6d8f3d78f50918ad7dacdd7fe646da6eb9a1e5c05c3cba17978f33bea36d3edd03161f92e08ccdae13b359b4e03e4d304c242b1604720708bc3d66733
7
- data.tar.gz: b864f38e05f08544000bc4fd7ae137492bb5c9686b66cfbc898af5f1378c3ef8959309ab42a55a567a74b88edfd0dbeea4ed59a1d9e5c298b369f622f5208396
6
+ metadata.gz: f6de095d6f3b91f95382d38f5ab3fafb706a3afc4cde914950660260795220c3547c2f9f33a6dc9b21293c9728197f5d8c91895de719f01a7bfa9953ba99c445
7
+ data.tar.gz: 366fa994e28ba61158109637efc355504d4e8c6a87636685a60b605506718106d57f62b56d3956ed1096b116af2863d512f959c8509507454fbf48c030326f3e
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.3.1
data/README.md CHANGED
@@ -29,6 +29,15 @@ require 'codecal'
29
29
  # error : String -- error message of parameters when success == false
30
30
  Codecal.bank_customer_code_generate(account_id, currency)
31
31
 
32
+ # Generate simple code for account
33
+ # Parameters:
34
+ # account_id : Integer(<=9) --user account_id in acx
35
+ # Return: Hash
36
+ # success : boolean -- generate customer code success
37
+ # customer code : String -- numbers(account_id.length + 1) string when success == true
38
+ # error : String -- error message of parameters when success == false
39
+ Codecal.simple_code_generate(account_id)
40
+
32
41
  # Validate customer code
33
42
  # Parameters:
34
43
  # customer_code : String
@@ -36,6 +45,13 @@ Codecal.bank_customer_code_generate(account_id, currency)
36
45
  # valid : boolean
37
46
  Codecal.validate_bank_customer_code(String)
38
47
 
48
+ # Validate simple code
49
+ # Parameters:
50
+ # simple_code : String
51
+ # Return:
52
+ # valid : boolean
53
+ Codecal.validate_simple_code(String)
54
+
39
55
  # Get currency name
40
56
  # Parameters:
41
57
  # currency_code : String(4)
@@ -1,3 +1,3 @@
1
1
  module Codecal
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/lib/codecal.rb CHANGED
@@ -3,6 +3,7 @@ require_relative "./code"
3
3
 
4
4
  module Codecal
5
5
  @@generate_seed = [2,7,5,3,8,9,5,9,1,6,7,3,5]
6
+ @@simple_seed = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1]
6
7
  class<<self
7
8
  def bank_customer_code_generate(account_id, currency)
8
9
  errormsg = ""
@@ -22,12 +23,33 @@ module Codecal
22
23
  end
23
24
  end
24
25
 
26
+ def simple_code_generate(account_id)
27
+ errormsg = ""
28
+ if account_id == nil
29
+ errormsg += "parameter is nil. "
30
+ return {success:false, error: errormsg}
31
+ end
32
+ errormsg += "parameter 1 type should be Integer. " unless account_id.to_i > 0
33
+ if errormsg.size == 0
34
+ cal_array = ("%09d" % account_id).split("").map! {|i| i.to_i}
35
+ {success:true,customer_code: simple_code_calculate(cal_array, @@simple_seed) }
36
+ else
37
+ {success:false, error: errormsg}
38
+ end
39
+ end
40
+
25
41
  def validate_bank_customer_code(customer_code)
26
42
  return false unless customer_code && customer_code.is_a?(String) && customer_code.size == 16
27
43
  calcode = code_calculate(customer_code[0..12].split("").map! {|i| i.to_i}, @@generate_seed)
28
44
  return customer_code == calcode
29
45
  end
30
46
 
47
+ def validate_simple_code(simple_code)
48
+ return false unless simple_code && simple_code.to_i > 0 && simple_code.size > 1
49
+ calcode = simple_code_calculate(simple_code[0..-2].split("").map! {|i| i.to_i}, @@simple_seed)
50
+ return simple_code == calcode
51
+ end
52
+
31
53
  def get_currency_name(currency_code)
32
54
  return nil if !currency_code || currency_code.size !=4 || !currency_code.is_a?(String)
33
55
  return Code.new.get_name(currency_code)
@@ -38,5 +60,10 @@ module Codecal
38
60
  code = array.each_with_index.inject(0){|count, (i, index)| count += i*seed[index]}
39
61
  return array.join + ("%03d" % code).to_s
40
62
  end
63
+
64
+ def simple_code_calculate(array, seed)
65
+ code = array.reverse.each_with_index.inject(0){|count, (i, index)| count += i*seed.reverse[index + 1]}
66
+ return (array.join + ( code % 11 ).to_s).to_i.to_s
67
+ end
41
68
  end
42
69
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codecal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roger Fang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-09-12 00:00:00.000000000 Z
11
+ date: 2017-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -61,6 +61,7 @@ extra_rdoc_files: []
61
61
  files:
62
62
  - ".gitignore"
63
63
  - ".rspec"
64
+ - ".ruby-version"
64
65
  - ".travis.yml"
65
66
  - ".vscode/launch.json"
66
67
  - CODE_OF_CONDUCT.md