class Base32::Electrologica

Constants

ALPHABET
BIN

add shortcuts (convenience) aliases

BINARY
CODE
NUM
NUMBER

Public Class Methods

_clean( str ) click to toggle source
# File lib/base32-alphabets/electrologica.rb, line 97
def self._clean( str )
  ## note: allow spaces or slash (/) for dashes (-)
  str = str.strip  ## remove leading and trailing spaces (first)
  str = str.tr( ' /', '-' )
  str = str.gsub( /-{2,}/, '-' )  ## fold more than one dash into one
end
_decode( str ) click to toggle source

Converts a base32 string to a base10 integer.

# File lib/base32-alphabets/electrologica.rb, line 87
def self._decode( str )
  str = _clean( str )
  str.split('-').reduce([]) do |bytes,char|
    byte = number[char]
    raise ArgumentError, "Value passed not a valid base32 string - >#{char}< not found in alphabet"  if byte.nil?
    bytes << byte
    bytes
  end
end
_encode( bytes ) click to toggle source

Converts a base10 integer to a base32 string.

# File lib/base32-alphabets/electrologica.rb, line 64
def self._encode( bytes )
  bytes.each_with_index.reduce(String.new) do |buf, (byte,i)|
    buf << "-"    if i > 0   ## add separator (-) EXCEPT for first char
    buf << alphabet[byte]
    buf
  end
end
_fmt( str, group: 4, sep: ' ' ) click to toggle source
# File lib/base32-alphabets/electrologica.rb, line 72
def self._fmt( str, group: 4, sep: ' ' )
  ## todo/fix: check sep - MUST be space () or slash (/) for now!!!!!

  str = _clean( str )

  ## format in groups of four (4) separated by space
  ##  e.g.  09-09-09-09-06-07-07-04-01-01-14-01-09-15-14-14-00-05-05-00
  ##     :  09-09-09-09 06-07-07-04 01-01-14-01 09-15-14-14 00-05-05-00

  ## note: use reverse - if not divided by four that leading slice gets cut short
  str.split('-').reverse.each_slice( group ).map { |slice| slice.reverse.join( '-' ) }.reverse.join( sep )
end
alphabet() click to toggle source
# File lib/base32-alphabets/electrologica.rb, line 11
def self.alphabet() ALPHABET; end
binary() click to toggle source
# File lib/base32-alphabets/electrologica.rb, line 59
def self.binary() BINARY; end
code() click to toggle source
# File lib/base32-alphabets/electrologica.rb, line 58
def self.code() CODE; end
number() click to toggle source
# File lib/base32-alphabets/electrologica.rb, line 49
def self.number() NUMBER; end