Module: Idiot

Extended by:
Idiot
Included in:
Idiot
Defined in:
lib/idiot.rb,
lib/idiot/config.rb,
lib/idiot/version.rb

Defined Under Namespace

Modules: Config

Constant Summary collapse

VERSION =
"0.0.1"

Instance Method Summary collapse

Instance Method Details

#decode(str) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/idiot.rb', line 49

def decode(str)
	initialize
	str.reverse!
	result = 0
	len = str.size - 1
	(0..len).each do |i|
		bcp = @base ** (len - i)
		result += @index.index(str.slice(i, 1)) * bcp
	end

	result -= @base ** (@pad_up - 1)
	result.to_i
end

#encode(num) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/idiot.rb', line 32

def encode(num)
	initialize
	num += @base ** (@pad_up - 1)

	result = ""
	n = Math.log(num, @base).floor

	n.step(0, -1) {|i|
		bcp = @base ** i
		a = ((num / bcp) % @base).floor
		result << @index.slice(a, 1)
		num = num - (a * bcp)
	}

	result.reverse!
end

#initializeObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/idiot.rb', line 13

def initialize
	@index = Idiot::Config.alphabet
	pass_key = Idiot::Config.pass_key

	i = @index.split(//)

	passhash = (Digest::SHA2.new << pass_key).to_s
	passhash = if passhash.size < @index.size
		(Digest::SHA2.new(512) << pass_key).to_s
	else
		passhash
	end
	p = passhash.split(//)
	@index = i.zip(p).sort{|x, y| x[1] <=> y[1] }.collect{|x| x[0]}.join

	@base = @index.size
	@pad_up = 5
end