module Multibases
Constants
- Encoded
- IMPLEMENTATIONS
rubocop:disable Style/MutableConstant
- Registration
rubocop:enable Style/MutableConstant
- VERSION
Public Instance Methods
[](entry)
click to toggle source
# File lib/multibases/registry.rb, line 26 def [](entry) find_by(code: entry, encoding: entry) end
code(encoding)
click to toggle source
# File lib/multibases/bare.rb, line 123 def code(encoding) fetch_by!(encoding: encoding).code end
codes()
click to toggle source
# File lib/multibases/registry.rb, line 52 def codes Multibases::IMPLEMENTATIONS.values.map(&:code) end
decode(data, *args)
click to toggle source
# File lib/multibases/bare.rb, line 114 def decode(data, *args) encoded = Multibases.unpack(data) encoded.decode(*args) end
decorate(encoded, encoding = nil)
click to toggle source
# File lib/multibases/bare.rb, line 95 def decorate(encoded, encoding = nil) return encoded.pack if encoded.is_a?(Encoded) raise ArgumentError, 'Missing encoding of encoded data' unless encoding encoded = encoded.bytes unless encoded.is_a?(Array) Encoded.new( Multibases.code(encoding), encoding, encoded.length, EncodedByteArray.new(encoded) ).pack end
encode(encoding, data, engine = Multibases.engine(encoding))
click to toggle source
# File lib/multibases/bare.rb, line 69 def encode(encoding, data, engine = Multibases.engine(encoding)) raise NoEngine, encoding unless engine encoded_data = engine.encode(data) Encoded.new( Multibases.code(encoding), encoding, encoded_data.length, encoded_data ) end
encoding(code)
click to toggle source
# File lib/multibases/bare.rb, line 119 def encoding(code) fetch_by!(code: code).encoding end
engine(lookup)
click to toggle source
# File lib/multibases/bare.rb, line 127 def engine(lookup) registration = find_by(code: lookup, encoding: lookup) raise NoEngine, lookup unless registration registration.engine end
fetch_by!(code: nil, encoding: nil)
click to toggle source
# File lib/multibases/registry.rb, line 38 def fetch_by!(code: nil, encoding: nil) return Multibases::IMPLEMENTATIONS.fetch(encoding) if encoding Multibases.find_by(code: code).tap do |found| raise KeyError, "No implementation has code #{code}" unless found end end
find_by(code: nil, encoding: nil)
click to toggle source
# File lib/multibases/registry.rb, line 46 def find_by(code: nil, encoding: nil) Multibases::IMPLEMENTATIONS.values.find do |v| v == code || v == encoding end end
implement(encoding, code, implementation = nil, alphabet = nil, alphabet_encoding = nil)
click to toggle source
# File lib/multibases/registry.rb, line 30 def implement(encoding, code, implementation = nil, alphabet = nil, alphabet_encoding = nil) Multibases::IMPLEMENTATIONS[encoding] = Registration.new( code, encoding, implementation&.new(alphabet, encoding: alphabet_encoding) ) end
multibase_version(multibase_semver = nil)
click to toggle source
# File lib/multibases/registry.rb, line 60 def multibase_version(multibase_semver = nil) return @multibase_version if multibase_semver.nil? @multibase_version = multibase_semver end
names()
click to toggle source
# File lib/multibases/registry.rb, line 56 def names Multibases::IMPLEMENTATIONS.keys end
pack(*args)
click to toggle source
# File lib/multibases/bare.rb, line 109 def pack(*args) encoded = Multibases.encode(*args) encoded.pack end
unpack(decorated)
click to toggle source
# File lib/multibases/bare.rb, line 82 def unpack(decorated) decorated = decorated.pack('c*') if decorated.is_a?(Array) code = decorated[0] encoded_data = decorated[1..-1] Encoded.new( code, Multibases.encoding(code), encoded_data.length, EncodedByteArray.new(encoded_data.bytes) ) end