codecal 0.3.5 → 0.3.6
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 +8 -0
- data/lib/codecal/version.rb +1 -1
- data/lib/codecal.rb +32 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f77a2ce8d8ecfdb5a14b4dd26aef81339c7ad2ae
|
4
|
+
data.tar.gz: d63bf9f0d3326cfa83093771f2c0e3052b049921
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ca0cce49b239c578aa215d1fa5bbc43c886a8c94889da9fc53dd8c1c9b2004c3a0fdd8c9a1ab1d8cf5bb5bbeef802fb550d01fbcd891323ab6646518688e548
|
7
|
+
data.tar.gz: 77102c8cc6b5e69237b649e108aa7006ce8b1513463f28384559b4096f53609d8100941f98a20270749981ca674b0ef1c3a764fa21c2653afbbd7c0aa38313e0
|
data/README.md
CHANGED
@@ -70,6 +70,14 @@ Codecal.validate_simple_code(String)
|
|
70
70
|
# valid : boolean
|
71
71
|
Codecal.validate_masked_code(String)
|
72
72
|
|
73
|
+
# Get unmasked code
|
74
|
+
# Parameters:
|
75
|
+
# mask : String(>=6) -- mask of letter or number
|
76
|
+
# masked_code : String(>=6)
|
77
|
+
# Return:
|
78
|
+
# code : String(>=6) || false : boolean
|
79
|
+
Codecal.get_unmasked_code(String)
|
80
|
+
|
73
81
|
# Get currency name
|
74
82
|
# Parameters:
|
75
83
|
# currency_code : String(4)
|
data/lib/codecal/version.rb
CHANGED
data/lib/codecal.rb
CHANGED
@@ -30,7 +30,7 @@ module Codecal
|
|
30
30
|
errormsg += "parameter is nil. "
|
31
31
|
return {success:false, error: errormsg}
|
32
32
|
end
|
33
|
-
errormsg += "the type of the code to be encrypted should be Integer. " unless account_id.
|
33
|
+
errormsg += "the type of the code to be encrypted should be Integer. " unless all_digits?(account_id.to_s)
|
34
34
|
if errormsg.size == 0
|
35
35
|
cal_array = (account_id.to_i.to_s).split("").map! {|i| i.to_i}
|
36
36
|
{success:true,customer_code: simple_code_calculate(cal_array, @@simple_seed) }
|
@@ -40,7 +40,7 @@ module Codecal
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def code_generate_with_mask(mask, account_id)
|
43
|
-
errormsg = "mark should be string of letter or number and length should >= 5"
|
43
|
+
errormsg = "mark should be string of letter or number and length should >= 5" unless is_legal_mask?(mask)
|
44
44
|
return {success:false, error: errormsg} if errormsg
|
45
45
|
result = simple_code_generate(account_id)
|
46
46
|
return result unless result[:success]
|
@@ -61,14 +61,22 @@ module Codecal
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def validate_masked_code(mask, masked_code)
|
64
|
-
return false unless
|
65
|
-
return false
|
64
|
+
return false unless is_legal_masked_code?(masked_code)
|
65
|
+
return false unless is_legal_mask?(mask)
|
66
66
|
offset = get_mask_offset(mask)
|
67
|
-
result = simple_code_generate(unmask_code(offset, masked_code))
|
67
|
+
result = simple_code_generate(unmask_code(offset, masked_code)[1..-1].to_i)
|
68
68
|
return false unless result[:success]
|
69
69
|
return masked_code == mask_code(offset, result[:customer_code])
|
70
70
|
end
|
71
71
|
|
72
|
+
def get_unmasked_code(mask, masked_code)
|
73
|
+
return false unless is_legal_masked_code?(masked_code)
|
74
|
+
return false unless is_legal_mask?(mask)
|
75
|
+
offset = get_mask_offset(mask)
|
76
|
+
code = unmask_code(offset, masked_code)
|
77
|
+
all_digits?(code) ? code : false
|
78
|
+
end
|
79
|
+
|
72
80
|
def get_currency_name(currency_code)
|
73
81
|
return nil if !currency_code || currency_code.size !=4 || !currency_code.is_a?(String)
|
74
82
|
return Code.new.get_name(currency_code)
|
@@ -95,10 +103,11 @@ module Codecal
|
|
95
103
|
end
|
96
104
|
|
97
105
|
def unmask_code(offset, masked_code)
|
98
|
-
|
106
|
+
start_code = masked_code[0]
|
107
|
+
code = masked_code[1..-1].downcase.split("").each_with_index.inject([]) do |code, (c, i)|
|
99
108
|
code.push(@@BASE_ALPHABET[(@@BASE_ALPHABET.find_index(c) - offset[ i % offset.size ]) % @@BASE_ALPHABET.size])
|
100
109
|
end
|
101
|
-
code.join
|
110
|
+
code.unshift(start_code).join
|
102
111
|
end
|
103
112
|
|
104
113
|
def get_mask_offset(mask)
|
@@ -113,8 +122,23 @@ module Codecal
|
|
113
122
|
end
|
114
123
|
end
|
115
124
|
|
116
|
-
def all_letters_or_digits(str)
|
125
|
+
def all_letters_or_digits?(str)
|
117
126
|
str[/[a-zA-Z0-9]+/] == str
|
118
127
|
end
|
128
|
+
|
129
|
+
def all_digits?(str)
|
130
|
+
str[/[0-9]+/] == str
|
131
|
+
end
|
132
|
+
|
133
|
+
def is_legal_mask?(mask)
|
134
|
+
return false if !mask.is_a?(String) || mask.size < 6 || !all_letters_or_digits?(mask)
|
135
|
+
return true
|
136
|
+
end
|
137
|
+
|
138
|
+
def is_legal_masked_code?(masked_code)
|
139
|
+
return false unless masked_code.is_a?(String) && masked_code.size > 5
|
140
|
+
return true
|
141
|
+
end
|
142
|
+
|
119
143
|
end
|
120
144
|
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.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roger Fang
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|