module B3bm
Constants
- ALPHABET
- CHARACTER_TO_INTEGER
- INTEGER_TO_CHARACTER
- VERSION
Public Class Methods
decode(value, string: true)
click to toggle source
- public
-
Decode a Base62 string to a string or integer result.
# File lib/b3bm.rb, line 62 def self.decode(value, string: true) if value.size > 0 result = [] integer = 0 zeroes = 0 leading = true value.to_s.each_char do |character| if leading if character == "0" zeroes += 1 else leading = false end end integer *= 62 integer += (CHARACTER_TO_INTEGER[character] || raise(Invalid, "`#{character}' is not in the alphabet")) end if string == true while integer > 0 result.unshift(integer % 256) integer /= 256 end while zeroes > 0 result.unshift(0) zeroes -= 1 end result.pack("c*") else integer end elsif string == true "" else 0 end end
encode(value)
click to toggle source
- public
-
Encode a string or integer as Base62.
# File lib/b3bm.rb, line 19 def self.encode(value) result = +"" if value.size > 0 zeroes = 0 case value when Integer integer = value else integer = 0 leading = true value.to_s.each_byte do |byte| if leading if byte == 0 zeroes += 1 else leading = false end end integer *= 256 integer += byte end end while integer > 0 result.prepend(INTEGER_TO_CHARACTER[integer % 62]) integer /= 62 end while zeroes > 0 result.prepend("0") zeroes -= 1 end end result end
version()
click to toggle source
# File lib/b3bm/version.rb, line 6 def self.version VERSION end