Popularity
4.3
Growing
Activity
0.0
Stable
18
3
1

Programming language: Crystal
License: MIT License
Tags: Compression    
Latest version: v0.1.5

snappy alternatives and similar shards

Based on the "Compression" category.
Alternatively, view snappy alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of snappy or a related project?

Add another 'Compression' Shard

README

Build Status GitHub release Docs

Crystal Snappy

Pure Crystal implementation of Snappy compression format. This implementation supports more common case Snappy Framing Format.

Installation

  1. Add the dependency to your shard.yml:
   dependencies:
     snappy:
       github: naqvis/snappy
  1. Run shards install

Usage

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

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

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