Module: Mure

Defined in:
lib/mure.rb,
lib/mure/version.rb

Constant Summary collapse

TABLE =
{
  '000000' =>	'A',
  '000001' =>	'B',
  '000010' =>	'C',
  '000011' =>	'D',
  '000100' =>	'E',
  '000101' =>	'F',
  '000110' =>	'G',
  '000111' =>	'H',
  '001000' =>	'I',
  '001001' =>	'J',
  '001010' =>	'K',
  '001011' =>	'L',
  '001100' =>	'M',
  '001101' =>	'N',
  '001110' =>	'O',
  '001111' =>	'P',
  '010000' =>	'Q',
  '010001' =>	'R',
  '010010' =>	'S',
  '010011' =>	'T',
  '010100' =>	'U',
  '010101' =>	'V',
  '010110' =>	'W',
  '010111' =>	'X',
  '011000' =>	'Y',
  '011001' =>	'Z',
  '011010' =>	'a',
  '011011' =>	'b',
  '011100' =>	'c',
  '011101' =>	'd',
  '011110' =>	'e',
  '011111' =>	'f',
  '100000' =>	'g',
  '100001' =>	'h',
  '100010' =>	'i',
  '100011' =>	'j',
  '100100' =>	'k',
  '100101' =>	'l',
  '100110' =>	'm',
  '100111' =>	'n',
  '101000' =>	'o',
  '101001' =>	'p',
  '101010' =>	'q',
  '101011' =>	'r',
  '101100' =>	's',
  '101101' =>	't',
  '101110' =>	'u',
  '101111' =>	'v',
  '110000' =>	'w',
  '110001' =>	'x',
  '110010' =>	'y',
  '110011' =>	'z',
  '110100' =>	'0',
  '110101' =>	'1',
  '110110' =>	'2',
  '110111' =>	'3',
  '111000' =>	'4',
  '111001' =>	'5',
  '111010' =>	'6',
  '111011' =>	'7',
  '111100' =>	'8',
  '111101' =>	'9',
  '111110' =>	'+',
  '111111' =>	'/'
}.freeze
VERSION =
'0.1.0'.freeze

Class Method Summary collapse

Class Method Details

.encode64(text) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/mure.rb', line 71

def self.encode64(text)
  # NOTE: String#unpackは、エンディアンに依存しそう。。。
  binary_text = text.unpack('B*')[0]
  loop do
    break if (binary_text.size % 6).zero?
    binary_text << '0'
  end

  encoded_text = binary_text.each_char.each_slice(6).map { |str| TABLE.fetch(str.join) }.join
  loop do
    break if (encoded_text.size % 4).zero?
    encoded_text << '='
  end

  encoded_text
end