class Ipfs::Base58

Constants

ALPHABET
BASE

Public Class Methods

decode(number) click to toggle source
# File lib/base.rb, line 6
def self.decode(number)
  valid?(number) \
    ? to_base10(number)
    : 0
end
encode(base10_number) click to toggle source
# File lib/base.rb, line 26
def self.encode(base10_number)
  base10_number.is_a?(Integer) \
    ? to_base58(base10_number) \
    : ''
end
to_base10(base58_number) click to toggle source
# File lib/base.rb, line 12
def self.to_base10(base58_number)
  base58_number
    .reverse
    .split(//)
    .each_with_index
    .reduce(0) do |base10_number, (base58_numeral, index)|
    base10_number + ALPHABET.index(base58_numeral) * (BASE**index)
  end
end
to_base58(base10_number) click to toggle source
# File lib/base.rb, line 32
def self.to_base58(base10_number)
  base58_number = ''

  begin
    base58_number << ALPHABET[base10_number % BASE]
    base10_number /= BASE
  end while base10_number > 0

  base58_number.reverse
end
valid?(number) click to toggle source
# File lib/base.rb, line 22
def self.valid?(number)
  number.match?(/\A[#{ALPHABET}]+\z/)
end