class Codecal::Calc
Public Class Methods
new(mask_alphabet = nil)
click to toggle source
# File lib/codecal.rb, line 15 def initialize(mask_alphabet = nil) if mask_alphabet.is_a?(String) && mask_alphabet.size > 26 && all_letters_or_digits?(mask_alphabet) && mask_alphabet.size == mask_alphabet.split('').uniq.size @mask_alphabet = mask_alphabet.split('') else @mask_alphabet = @@MASK_ALPHABET end end
Public Instance Methods
code_generate_with_mask(mask, number)
click to toggle source
# File lib/codecal.rb, line 41 def code_generate_with_mask(mask, number) errormsg = "mark should be string of letter or number and length should >= 5" unless is_legal_mask?(mask) return {success:false, error: errormsg} if errormsg result = simple_code_generate(number) return result unless result[:success] offset = get_mask_offset(mask) # puts "masked code: #{result[:customer_code]}" {success:true, customer_code: mask_code(offset, result[:customer_code])} end
get_unmasked_code(mask, masked_code)
click to toggle source
# File lib/codecal.rb, line 69 def get_unmasked_code(mask, masked_code) return false unless is_legal_masked_code?(masked_code) return false unless is_legal_mask?(mask) masked_code = convert_masked_code_typo(masked_code) offset = get_mask_offset(mask) code = unmask_code(offset, masked_code) masked_code.size == code.size ? code : false end
simple_code_generate(number)
click to toggle source
# File lib/codecal.rb, line 26 def simple_code_generate(number) errormsg = "" if number == nil errormsg += "parameter is nil. " return {success:false, error: errormsg} end errormsg += "the type of the code to be encrypted should be Integer. " unless all_digits?(number.to_s) if errormsg.size == 0 cal_array = (number.to_i.to_s).split("").map! {|i| i.to_i} {success:true, customer_code: simple_code_calculate(cal_array) } else {success:false, error: errormsg} end end
validate_masked_code(mask, masked_code)
click to toggle source
# File lib/codecal.rb, line 57 def validate_masked_code(mask, masked_code) return false unless is_legal_masked_code?(masked_code) return false unless is_legal_mask?(mask) masked_code = convert_masked_code_typo(masked_code) offset = get_mask_offset(mask) result = simple_code_generate(unmask_code(offset, masked_code)[0..-2].to_i) return false unless result[:success] return masked_code == mask_code(offset, result[:customer_code]) end
validate_simple_code(simple_code)
click to toggle source
# File lib/codecal.rb, line 51 def validate_simple_code(simple_code) return false unless simple_code && simple_code.to_i > 0 && simple_code.size > 1 calcode = simple_code_calculate(simple_code[0..-2].split("").map! {|i| i.to_i}) return simple_code == calcode end