class Multibases::Base32

RFC 3548

Constants

Default

Public Class Methods

decode(plain) click to toggle source
# File lib/multibases/base32.rb, line 20
def self.decode(plain)
  Default.decode(plain)
end
encode(plain) click to toggle source
# File lib/multibases/base32.rb, line 16
def self.encode(plain)
  Default.encode(plain)
end
new(alphabet, strict: false, encoding: nil) click to toggle source
# File lib/multibases/base32.rb, line 82
def initialize(alphabet, strict: false, encoding: nil)
  @table = Table.from(alphabet, strict: strict, encoding: encoding)
end

Public Instance Methods

decode(encoded) click to toggle source
# File lib/multibases/base32.rb, line 95
def decode(encoded)
  return DecodedByteArray::EMPTY if encoded.empty?

  DecodedByteArray.new(chunks(encoded, 8).collect(&:decode).flatten)
end
encode(plain) click to toggle source
# File lib/multibases/base32.rb, line 86
def encode(plain)
  return EncodedByteArray::EMPTY if plain.empty?

  EncodedByteArray.new(
    chunks(plain, 5).collect(&:encode).flatten,
    encoding: @table.encoding
  )
end
inspect() click to toggle source
# File lib/multibases/base32.rb, line 9
def inspect
  '[Multibases::Base32 ' \
    "alphabet=\"#{@table.chars.join}\"" \
    "#{@table.strict? ? ' strict' : ''}" \
  ']'
end

Private Instance Methods

chunks(whole, size) click to toggle source
# File lib/multibases/base32.rb, line 103
def chunks(whole, size)
  whole = whole.bytes unless whole.is_a?(Array)

  whole.each_slice(size).map do |slice|
    ::Multibases::Base32::Chunk.new(slice, @table)
  end
end