Skip to content

compress.lz #

Description

compress.lz provides pure V implementations of several LZ-family codecs.

Supported formats:

  • lz77
  • lz78
  • lzw
  • lz4
  • lzss
  • lzma
  • lzma2
  • lzjb

Use the generic API when selecting a format dynamically:

import compress.lz

encoded := lz.compress('hello hello hello'.bytes(), .lz77)!
decoded := lz.decompress(encoded, .lz77)!
assert decoded.bytestr() == 'hello hello hello'

Use the format-specific APIs for direct calls:

import compress.lz

encoded := lz.compress_lzw('banana banana'.bytes())!
decoded := lz.decompress_lzw(encoded)!
assert decoded.bytestr() == 'banana banana'

fn compress #

fn compress(data []u8, format Format) ![]u8

compress compresses data with the selected LZ format.

fn compress_lz4 #

fn compress_lz4(data []u8) ![]u8

compress_lz4 compresses data using a pure-V LZ4-like stream.

fn compress_lz77 #

fn compress_lz77(data []u8) ![]u8

compress_lz77 compresses data using a pure-V LZ77 style stream.

fn compress_lz78 #

fn compress_lz78(data []u8) ![]u8

compress_lz78 compresses data using a pure-V LZ78 dictionary stream.

fn compress_lzjb #

fn compress_lzjb(data []u8) ![]u8

compress_lzjb compresses data using a pure-V LZJB-like stream.

fn compress_lzma #

fn compress_lzma(data []u8) ![]u8

compress_lzma compresses data using a pure-V LZMA-like stream.

fn compress_lzma2 #

fn compress_lzma2(data []u8) ![]u8

compress_lzma2 compresses data using a pure-V LZMA2-like stream.

fn compress_lzss #

fn compress_lzss(data []u8) ![]u8

compress_lzss compresses data using a pure-V LZSS style stream.

fn compress_lzw #

fn compress_lzw(data []u8) ![]u8

compress_lzw compresses data using a pure-V LZW dictionary stream.

fn decompress #

fn decompress(data []u8, format Format) ![]u8

decompress decompresses data with the selected LZ format.

fn decompress_lz4 #

fn decompress_lz4(data []u8) ![]u8

decompress_lz4 decompresses data produced by compress_lz4.

fn decompress_lz77 #

fn decompress_lz77(data []u8) ![]u8

decompress_lz77 decompresses data produced by compress_lz77.

fn decompress_lz78 #

fn decompress_lz78(data []u8) ![]u8

decompress_lz78 decompresses data produced by compress_lz78.

fn decompress_lzjb #

fn decompress_lzjb(data []u8) ![]u8

decompress_lzjb decompresses data produced by compress_lzjb.

fn decompress_lzma #

fn decompress_lzma(data []u8) ![]u8

decompress_lzma decompresses data produced by compress_lzma.

fn decompress_lzma2 #

fn decompress_lzma2(data []u8) ![]u8

decompress_lzma2 decompresses data produced by compress_lzma2.

fn decompress_lzss #

fn decompress_lzss(data []u8) ![]u8

decompress_lzss decompresses data produced by compress_lzss.

fn decompress_lzw #

fn decompress_lzw(data []u8) ![]u8

decompress_lzw decompresses data produced by compress_lzw.

fn format_from_string #

fn format_from_string(name string) !Format

format_from_string parses a case-insensitive format name.

fn Format.from #

fn Format.from[W](input W) !Format

enum Format #

enum Format {
	lz77
	lz78
	lzw
	lz4
	lzss
	lzma
	lzma2
	lzjb
}

Format identifies which LZ-family codec variant to use.