class Paquito::ConditionalCompressor

Constants

COMPRESSED
UNCOMPRESSED

Public Class Methods

new(compressor, compress_threshold) click to toggle source
# File lib/paquito/conditional_compressor.rb, line 8
def initialize(compressor, compress_threshold)
  @compressor = Paquito.cast(compressor)
  @compress_threshold = compress_threshold
end

Public Instance Methods

dump(uncompressed) click to toggle source
# File lib/paquito/conditional_compressor.rb, line 13
def dump(uncompressed)
  uncompressed_size = uncompressed.bytesize
  version = UNCOMPRESSED
  value = uncompressed

  if @compress_threshold && uncompressed_size > @compress_threshold
    compressed = @compressor.dump(uncompressed)
    if compressed.bytesize < uncompressed_size
      version = COMPRESSED
      value = compressed
    end
  end

  version.chr(Encoding::BINARY) << value
end
load(payload) click to toggle source
# File lib/paquito/conditional_compressor.rb, line 29
def load(payload)
  payload_version = payload.getbyte(0)
  data = payload.byteslice(1..-1)
  case payload_version
  when UNCOMPRESSED
    data
  when COMPRESSED
    @compressor.load(data)
  else
    raise UnpackError, "invalid ConditionalCompressor version"
  end
end