41 lines
1.0 KiB
Markdown
41 lines
1.0 KiB
Markdown
# zlib.carp
|
||
|
||
is a high-level wrapper around [zlib](https://zlib.net/).
|
||
|
||
## Installation
|
||
|
||
```clojure
|
||
(load "git@git.veitheller.de:carpentry/zlib.git@0.0.2")
|
||
```
|
||
|
||
## Usage
|
||
|
||
The `ZLib` module provides only two functions, `inflate` and `deflate`. These
|
||
functions work in tandem to provide you with data compression.
|
||
|
||
```clojure
|
||
; deflate returns a Result of either binary data or an error message
|
||
(let [deflated (ZLib.deflate "mystring")]
|
||
(match deflated
|
||
; inflate returns a Result of either a string or an error message
|
||
(Success bin) (println* &(inflate bin))
|
||
(Error msg) (IO.errorln &msg)))
|
||
```
|
||
|
||
Because it’s a `Result` type, we can apply combinators to it.
|
||
|
||
```clojure
|
||
(=> (ZLib.deflate "mystring")
|
||
(Result.and-then &ZLib.inflate)
|
||
(Result.map-error &(fn [msg] (do (println* &msg) msg)))
|
||
)
|
||
```
|
||
|
||
You can also choose different levels of compression using `deflate-with`. The
|
||
levels are defined in `ZLib.ZLevel`, and are `NoCompression`, `BestSpeed`,
|
||
`BestCompression`, and `DefaultCompression`, which is, well, the default.
|
||
|
||
<hr/>
|
||
|
||
Have fun!
|