codecal 0.3.7 → 0.3.8

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: 0395231d5eb02631ddec85874e6ca1fb60183da7
4
- data.tar.gz: 2e18c40daf3150996f0248fde7f1dbf30a67cf3e
3
+ metadata.gz: 30e10c76141a7bd4dd1546176610410c73d433e3
4
+ data.tar.gz: f4d3c65238990953bca1addd0a67640b4b2b4842
5
5
  SHA512:
6
- metadata.gz: 7d0dcac46783723decc2b8ff9a4bb253357dff35cba15f751fe261e5257086ac492c1e2ab394a7c925be2b11ddc40db7dc29b7108b7fad63d635d4ca62e03af4
7
- data.tar.gz: 4a4597bc8f64f12b83b1818eee6ac25ee21161fba4b993d5fa3812a2fabb202199c72a79263700d8fe773dadf27ccdbe600e5874cafde2fe0962194a0dfad543
6
+ metadata.gz: fb51974461903ebdd56b21eedea93e218b136dbd64d490b8830d31264acf450e0dfc838d6f6fbeaad1e3630f1203788b8f611b25ed3f142cb39377db1959300f
7
+ data.tar.gz: 051155d89a2e63d2c459f902fafd340212b8185850ebb935f45ba2e9bc8e9589c663de1b082042dd501ac3042c9026e82cbffd6d3064ba99f404d7c6eea6cdbf
data/codecal.gemspec CHANGED
@@ -25,4 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "bundler", "~> 1.15"
26
26
  spec.add_development_dependency "rake", "~> 10.0"
27
27
  spec.add_development_dependency "rspec", "~> 3.0"
28
+ spec.add_development_dependency "pry"
28
29
  end
data/lib/codecal.rb CHANGED
@@ -3,6 +3,7 @@ require_relative "./code"
3
3
 
4
4
  module Codecal
5
5
  @@BASE_ALPHABET = ['o','a','3','p','9','h','b','2','q','i','1','c','4','r','7','j','s','5','d','t','8','k','u','e','v','l','w','f','x','6','m','y','0','g','z','n']
6
+ @@MASK_ALPHABET = ['a','4','p','9','h','r','7','q','c','3','b','2','j','s','6','d','t','8','k','u','e','l','v','f','w','x','5','m','y','g','z','n', 'i']
6
7
  @@generate_seed = [2,7,5,3,8,9,5,9,1,6,7,3,5]
7
8
  @@simple_seed = [5,4,6,2,3,1,5,4,6,2,3,1]
8
9
  class<<self
@@ -64,7 +65,7 @@ module Codecal
64
65
  return false unless is_legal_masked_code?(masked_code)
65
66
  return false unless is_legal_mask?(mask)
66
67
  offset = get_mask_offset(mask)
67
- result = simple_code_generate(unmask_code(offset, masked_code)[1..-1].to_i)
68
+ result = simple_code_generate(unmask_code(offset, masked_code)[0..-2].to_i)
68
69
  return false unless result[:success]
69
70
  return masked_code == mask_code(offset, result[:customer_code])
70
71
  end
@@ -95,19 +96,19 @@ module Codecal
95
96
 
96
97
  def mask_code(offset, code)
97
98
  code_arr = code.size > 5 ? code.split("") : ("%06d" % code).split("")
98
- start_code = code_arr.pop
99
99
  masked_code = code_arr.each_with_index.inject([]) do |code, (c, i)|
100
- code.push(@@BASE_ALPHABET[(@@BASE_ALPHABET.find_index(c) + offset[ i % offset.size ]) % @@BASE_ALPHABET.size])
100
+ code.push(@@MASK_ALPHABET[(@@BASE_ALPHABET.find_index(c) + offset[ i % offset.size ]) % @@MASK_ALPHABET.size])
101
101
  end
102
+ start_code = masked_code.pop
102
103
  masked_code.unshift(start_code).join
103
104
  end
104
105
 
105
106
  def unmask_code(offset, masked_code)
106
- start_code = masked_code[0]
107
- code = masked_code[1..-1].downcase.split("").each_with_index.inject([]) do |code, (c, i)|
108
- code.push(@@BASE_ALPHABET[(@@BASE_ALPHABET.find_index(c) - offset[ i % offset.size ]) % @@BASE_ALPHABET.size])
107
+ masked_code = masked_code[1..-1] + masked_code[0]
108
+ code = masked_code.downcase.split("").each_with_index.inject([]) do |code, (c, i)|
109
+ code.push(@@BASE_ALPHABET[(@@MASK_ALPHABET.find_index(c) - offset[ i % offset.size ]) % @@MASK_ALPHABET.size])
109
110
  end
110
- code.unshift(start_code).join
111
+ code.join
111
112
  end
112
113
 
113
114
  def get_mask_offset(mask)
@@ -137,6 +138,7 @@ module Codecal
137
138
 
138
139
  def is_legal_masked_code?(masked_code)
139
140
  return false unless masked_code.is_a?(String) && masked_code.size > 5
141
+ return false unless masked_code[/[a-zA-KMNP-Z2-9]+/] == masked_code
140
142
  return true
141
143
  end
142
144
 
@@ -1,3 +1,3 @@
1
1
  module Codecal
2
- VERSION = "0.3.7"
2
+ VERSION = "0.3.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codecal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roger Fang
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description: return a string according to parameters(1/2) and a seed.
56
70
  email:
57
71
  - roger.fang@blockchaintech.net.au