Module: NCipher::Helper

Included in:
NCipher
Defined in:
lib/n_cipher.rb

Instance Method Summary collapse

Instance Method Details

#common_argument_check(string, seed, delimiter) ⇒ Object

Raises:

  • (ArgumentError)


13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/n_cipher.rb', line 13

def common_argument_check(string, seed, delimiter)
  [string, seed, delimiter].each do |obj|
    raise TypeError, "#{obj} is #{obj.class} object. Argument must be string object." unless obj.kind_of?(String)
    raise ArgumentError, 'Invalid argument.' if obj.empty?
  end
  raise ArgumentError, 'Seed must be 2 to 36 characters.' unless seed.size.between?(2, 36)
  raise ArgumentError, 'Seed and delimiter are duplicated.' unless (seed.chars & delimiter.chars).size.zero?
  # シード値が重複していないか?
  #   OK: 'あいう'
  #   NG: 'ああい'(「あ」が重複)
  raise ArgumentError, 'Character is duplicated in seed.' unless seed.size == seed.chars.uniq.size
end

#convert_table(string, mode) ⇒ Object



5
6
7
8
9
10
11
# File 'lib/n_cipher.rb', line 5

def convert_table(string, mode)
  table = [*'0'..'9', *'a'..'z'].zip(string.chars).reject(&:one?).to_h
  case mode
  when :encode then table
  when :decode then table.invert
  end
end