Sha256: afc2a8bae15edd40704e338ba09b2eb0169e1abd16d59dfce8bffea8e4d1d9fe

Contents?: true

Size: 1.81 KB

Versions: 1

Compression:

Stored size: 1.81 KB

Contents

require 'mure/version'

module Mure
  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

  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
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mure-0.1.0 lib/mure.rb