ExCodecs.Compression (ex_codecs v0.1.0)

Copy Markdown View Source

Compression codec category for ExCodecs.

This module serves as a namespace for compression codecs and provides category-level utilities for comparing and selecting compression algorithms.

Available Codecs

Compression vs Encoding

In ExCodecs, compression is encoding — and decompression is decoding. This consistent terminology spans all codec categories:

# These are equivalent
ExCodecs.encode(:zstd, data)     # compress
ExCodecs.decode(:zstd, data)     # decompress

Summary

Functions

Returns all available compression codecs.

Compresses data with the specified codec.

Decompresses data with the specified codec.

Functions

available_codecs()

@spec available_codecs() :: [ExCodecs.Codec.t()]

Returns all available compression codecs.

Returns a list of %ExCodecs.Codec{} structs sorted by name.

Examples

iex> codecs = ExCodecs.Compression.available_codecs()
iex> is_list(codecs) and length(codecs) >= 5
true

compress(codec, data, opts \\ [])

@spec compress(atom(), binary(), keyword()) ::
  {:ok, binary()} | {:error, ExCodecs.Error.t()}

Compresses data with the specified codec.

Shortcut for ExCodecs.encode/3.

decompress(codec, data, opts \\ [])

@spec decompress(atom(), binary(), keyword()) ::
  {:ok, binary()} | {:error, ExCodecs.Error.t()}

Decompresses data with the specified codec.

Shortcut for ExCodecs.decode/3.