class LZ4::Raw
Handles LZ4
native data stream (without any additional headers).
Public Class Methods
Compresses `source` string.
@param [String] source string to be compressed @param [Hash] options @option options [Fixnum] :input_size byte size of source to compress (must be less than or equal to `source.bytesize`) @option options [String] :dest output buffer which will receive compressed string @option options [Fixnum] :max_output_size acceptable maximum output size @return [String, Fixnum] compressed string and its length.
# File lib/lz4-ruby.rb, line 96 def self.compress(source, options = {}) return _compress(source, false, options) end
Compresses `source` string using High Compress Mode.
@param [String] source string to be compressed @param [Hash] options @option options [Fixnum] :input_size byte size of source to compress (must be less than or equal to `source.bytesize`) @option options [String] :dest output buffer which will receive compressed string @option options [Fixnum] :max_output_size acceptable maximum output size @return [String, Fixnum] compressed string and its length.
# File lib/lz4-ruby.rb, line 108 def self.compressHC(source, options = {}) return _compress(source, true, options) end
Private Class Methods
# File lib/lz4-ruby.rb, line 113 def self._compress(source, high_compression, options = {}) input_size = options[:input_size] if input_size == nil input_size = source.bytesize else if source.bytesize < input_size raise ArgumentError, "`:input_size` (#{input_size}) must be less than or equal `source.bytesize` (#{source.bytesize})" end end dest = options[:dest] max_output_size = options[:max_output_size] if max_output_size == nil if dest != nil max_output_size = dest.bytesize else max_output_size = input_size + (input_size / 255) + 16 if dest == nil end else if dest != nil && dest.bytesize < max_output_size raise ArgumentError, "`:dest` buffer size (#{dest.bytesize}) must be greater than or equal `:max_output_size` (#{max_output_size})" end end result = nil if high_compression result = LZ4Internal.compressHC_raw(source, input_size, dest, max_output_size) else result = LZ4Internal.compress_raw(source, input_size, dest, max_output_size) end if result[1] <= 0 raise LZ4Error, "compression failed" end return result[0], result[1] end
Decompresses `source` compressed string.
@param [String] source @param [Fixnum] max_output_size @param [Hash] options @option options [Fixnum] :input_size byte size of source to decompress (must be less than or equal to `source.bytesize`) @option options [String] :dest output buffer which will receive decompressed string @return [String, Fixnum] decompressed string and its length.
# File lib/lz4-ruby.rb, line 162 def self.decompress(source, max_output_size, options = {}) input_size = options[:input_size] if input_size == nil input_size = source.bytesize else if source.bytesize < input_size raise ArgumentError, "`:input_size` (#{input_size}) must be less than or equal `source.bytesize` (#{source.bytesize})" end end dest = options[:dest] if dest != nil && dest.bytesize < max_output_size raise ArgumentError, "`:dest` buffer size (#{dest.bytesize}) must be greater than or equal `max_output_size` (#{max_output_size})" end result = LZ4Internal.decompress_raw(source, input_size, dest, max_output_size) if result[1] <= 0 return "", 0 if source == "\x00" raise LZ4Error, "decompression failed" end return result[0], result[1] end