class LZString::Base64

Base64 compressing algorithm.

Constants

KEY_STR_BASE64

Base64 alphabet.

Public Class Methods

compress(input) click to toggle source

@param input [String]

# File lib/lz_string/base64.rb, line 8
def self.compress(input)
  return "" if input.nil?

  res = LZString::Base.compress(input, 6, lambda { |a| KEY_STR_BASE64[a] })

  # To produce valid Base64
  case (res.length % 4)
  when 0 then res
  when 1 then res + "==="
  when 2 then res + "=="
  when 3 then res + "="
  end
end
decompress(compressed) click to toggle source

@param compressed [String]

# File lib/lz_string/base64.rb, line 23
def self.decompress(compressed)
  return "" if compressed.nil?
  return nil if compressed == ""

  LZString::Base.decompress(
    compressed.length,
    32,
    lambda { |index| get_base_value(KEY_STR_BASE64, compressed[index]) }
  )
end

Private Class Methods

get_base_value(alphabet, character) click to toggle source

@param alphabet [String] @param character [String]

# File lib/lz_string/base64.rb, line 36
def self.get_base_value(alphabet, character)
  base_reverse_dic = {}

  if (!base_reverse_dic[alphabet])
    base_reverse_dic[alphabet] = {}
    for i in 0...alphabet.length do
      base_reverse_dic[alphabet][alphabet[i]] = i
    end
  end

  base_reverse_dic[alphabet][character]
end