snappy
Version, currently 0.1.78 versions
github.com/naqvis/snappy
Snappy compression format reader/writer for Crystal
22 stars
1 dependent
License: MIT
Installation
# Add this to your shard.yml
dependencies:
snappy:
github: naqvis/snappy
version: ~> 0.1.7Then run:
shards installshard.yml
- Crystal
>= 0.36.0, < 2.0.0- License
- MIT
- Author
- Ali Naqvi <syed.alinaqvi@gmail.com>
Dependencies
This version declares no dependencies.
README
# Crystal Snappy

[](https://github.com/naqvis/snappy/releases)
[](https://naqvis.github.io/snappy/)
**Pure Crystal** implementation of [Snappy](https://github.com/google/snappy) compression format. This implementation supports more common case [Snappy Framing Format](https://github.com/google/snappy/blob/master/framing_format.txt).
## Installation
1. Add the dependency to your `shard.yml`:
```yaml
dependencies:
snappy:
github: naqvis/snappy
```
2. Run `shards install`
## Usage
```crystal
require "snappy"
```
Module provides both `Compress::Snappy::Reader` and `Compress::Snappy::Writer` for use with streams like `IO` and/or files. It also provides `Compress::Snappy#decode` and `Compress::Snappy#encode` for uncompressing and compressing block formats.
## Example: decompress a snappy file
#
```crystal
require "snappy"
File.write("file.sz", Bytes[255, 6, 0, 0, 115, 78, 97, 80, 112, 89, 1, 8, 0, 0, 104, 16, 130, 162, 97, 98, 99, 100])
string = File.open("file.sz") do |file|
Compress::Snappy::Reader.open(file) do |sz|
sz.gets_to_end
end
end
string # => "abcd"
```
## Example: compress a file to snappy format
#
```crystal
require "snappy"
File.write("file.txt", "abcd")
File.open("./file.txt", "r") do |input_file|
File.open("./file.sz", "w") do |output_file|
Compress::Snappy::Writer.open(output_file) do |sz|
IO.copy(input_file, sz)
end
end
end
```
Refer to **specs** for usage examples.
## Development
To run all tests:
```
crystal spec
```
## Contributing
1. Fork it (<https://github.com/naqvis/snappy/fork>)
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request
## Contributors
- [Ali Naqvi](https://github.com/naqvis) - creator and maintainer
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.1.7- Tagged
- Mar 25, 2021
- Commit
970a2d849b7c- Crystal
>= 0.36.0, < 2.0.0- Indexed
- yes
Dependents
Repository
github.com/naqvis/snappy
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 13, 2026
- Synced
- Aug 12, 2026
- Versions
- 8