Class: IdEncoder::UrlEncoder

Inherits:
Object
  • Object
show all
Defined in:
lib/id_encoder.rb

Class Method Summary collapse

Class Method Details

._decode(n) ⇒ Object



93
94
95
96
97
98
99
100
101
# File 'lib/id_encoder.rb', line 93

def self._decode(n)
  result = 0
  @mapping.each_with_index { |item, index|
    if n & (1 << item) != 0
      result = result | (1 << index)
    end
  }
  result
end

._enbase(x) ⇒ Object



107
108
109
110
111
112
113
# File 'lib/id_encoder.rb', line 107

def self._enbase(x)
  n = @alphabet.size
  if x < n
    return @alphabet[x]
  end
  _enbase(x/n) + @alphabet[x % n]
end

._encode(n) ⇒ Object



83
84
85
86
87
88
89
90
91
# File 'lib/id_encoder.rb', line 83

def self._encode(n)
  result = 0
  @mapping.each_with_index { |item, index|
    if n & (1 << index) != 0
      result = result | (1 << item)
    end
  }
  result
end

.debase(x) ⇒ Object



115
116
117
118
119
120
121
122
123
# File 'lib/id_encoder.rb', line 115

def self.debase(x)
  n = @alphabet.size
  result = 0
  a = x.split('').reverse
  a.each_with_index {|item, i|
    result += @alphabet.index(item) * (n ** i)
  }
  result
end

.decode(n) ⇒ Object



79
80
81
# File 'lib/id_encoder.rb', line 79

def self.decode(n)
  (n & ~@mask) | _decode(n & @mask)
end

.decode_url(n) ⇒ Object



71
72
73
# File 'lib/id_encoder.rb', line 71

def self.decode_url(n)
  decode(debase(n))
end

.enbase(x, min_length = MIN_LENGTH) ⇒ Object



103
104
105
# File 'lib/id_encoder.rb', line 103

def self.enbase(x, min_length=MIN_LENGTH)
  _enbase(x)
end

.encode(n) ⇒ Object



75
76
77
# File 'lib/id_encoder.rb', line 75

def self.encode(n)
  (n & ~@mask) | _encode(n & @mask)
end

.encode_url(n, min_length = MIN_LENGTH) ⇒ Object



67
68
69
# File 'lib/id_encoder.rb', line 67

def self.encode_url(n, min_length=MIN_LENGTH)
  enbase(encode(n), min_length)
end