Module: Tokenizr

Defined in:
lib/tokenizr.rb,
lib/tokenizr/error.rb,
lib/tokenizr/version.rb

Defined Under Namespace

Classes: Error

Constant Summary collapse

INDEX =
'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
LENGTH =
15
VERSION =
"1.0.1"

Class Method Summary collapse

Class Method Details

.decode(string) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/tokenizr.rb', line 25

def self.decode(string)
  str = string.reverse
  ret = 0

  (0...str.length).each do |i|
    ret += INDEX.index(str[i]) * (Tokenizr.bcpow(INDEX.length, (str.length - 1) - i))
  end

  ret.to_s[1..-1].to_i
end

.encode(number) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/tokenizr.rb', line 7

def self.encode(number)
  if number.nil?
    raise Error.new 'Supplied argument must be a number (nil found)'
  elsif number.class != Fixnum || number.to_i != number
    raise Error.new 'Supplied argument must be an integer'
  end

  number = lengthen(number).to_i
  ret = ''

  start = (Math.log(number) / Math.log(INDEX.length).to_f).floor
  start.downto(0).each do |i|
    ret += INDEX[((number / Tokenizr.bcpow(INDEX.length, i).to_f).floor % INDEX.length)]
  end

  ret.reverse
end