Module: Base62
- Defined in:
- lib/base62-rb.rb,
lib/base62/version.rb
Constant Summary collapse
- KEYS =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".freeze
- KEYS_HASH =
KEYS.each_char.with_index.inject({}) { |h, (k, v)| h[k] = v; h }
- BASE =
KEYS.length
- VERSION =
"0.3.1"
Class Method Summary collapse
-
.decode(str) ⇒ Object
Decodes base62 string to a base10 (decimal) number.
-
.encode(num) ⇒ Object
Encodes base10 (decimal) number to base62 string.
Class Method Details
.decode(str) ⇒ Object
Decodes base62 string to a base10 (decimal) number.
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/base62-rb.rb', line 23 def self.decode(str) num = 0 i = 0 len = str.length - 1 # while loop is faster than each_char or other 'idiomatic' way while i < str.length pow = BASE**(len - i) num += KEYS_HASH[str[i]] * pow i += 1 end num end |
.encode(num) ⇒ Object
Encodes base10 (decimal) number to base62 string.
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/base62-rb.rb', line 9 def self.encode(num) return "0" if num == 0 return nil if num < 0 str = "" while num > 0 # prepend base62 charaters str = KEYS[num % BASE] + str num = num / BASE end str end |