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.2"

Class Method Summary collapse

Class Method Details

.decode(string) ⇒ Object



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

def self.decode(string)
  if string.class != String
    raise Error.new "Supplied argument must be a string (#{string.class} found)"
  end

  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
# File 'lib/tokenizr.rb', line 7

def self.encode(number)
  if number.class != Fixnum || number.to_i != number
    raise Error.new "Supplied argument must be an integer (#{number.class} found)"
  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