module RadixEncoding::Encoding::EncodedPoints

Public Instance Methods

alphabet() click to toggle source
# File lib/radix_encoding/encoding/encoded_points.rb, line 9
def alphabet
  raise NotImplementedError
end
bits_from_encoded_points(encoded_points) click to toggle source
# File lib/radix_encoding/encoding/encoded_points.rb, line 23
def bits_from_encoded_points(encoded_points)
  encoded_points.
    map do |encoded_point|
      alphabet.
        index(encoded_point).
        to_s(2).
        rjust(encoded_point_bitsize, "0")
    end.
    join.
    chars
end
clean_encoded_points(encoded_points, padding_size) click to toggle source
# File lib/radix_encoding/encoding/encoded_points.rb, line 13
def clean_encoded_points(encoded_points, padding_size)
  return encoded_points unless padding_size.positive?

  encoded_points[0...-padding_size]
end
count_encoded_points_in(bitsize) click to toggle source
# File lib/radix_encoding/encoding/encoded_points.rb, line 19
def count_encoded_points_in(bitsize)
  bitsize / encoded_point_bitsize
end
encoded_point_bitsize() click to toggle source
# File lib/radix_encoding/encoding/encoded_points.rb, line 35
def encoded_point_bitsize
  raise NotImplementedError
end
encoded_points_for(bits) click to toggle source
# File lib/radix_encoding/encoding/encoded_points.rb, line 39
def encoded_points_for(bits)
  bits.
    each_slice(encoded_point_bitsize).
    map do |encoded_point_bits|
      encoded_point_index = encoded_point_bits.join.to_i(2)

      alphabet[encoded_point_index]
    end
end
pad_encoded_points(encoded_points, padding_size) click to toggle source
# File lib/radix_encoding/encoding/encoded_points.rb, line 49
def pad_encoded_points(encoded_points, padding_size)
  return encoded_points if padding.blank?

  padded_size = encoded_points.size + padding_size

  Subvisual::ArrayUtils.pad_right(encoded_points, padded_size, padding)
end
padding() click to toggle source
# File lib/radix_encoding/encoding/encoded_points.rb, line 57
def padding
  raise NotImplementedError
end
unpad_encoded_points(encoded_points) click to toggle source
# File lib/radix_encoding/encoding/encoded_points.rb, line 61
def unpad_encoded_points(encoded_points)
  first_padding_index = encoded_points.index(padding)

  return encoded_points if first_padding_index.nil?

  encoded_points[0...first_padding_index]
end