Skip to content
/ huffman Public
forked from supertinou/huffman

The Huffman encoding compression algorithm

License

Notifications You must be signed in to change notification settings

fgosew/huffman

 
 

Repository files navigation

Huffman

Code Climate Build Status Gem Version

The Huffman gem

This gem allow you to encode and decode a text using the Huffman encoding compression algorithm. It can also generate and visualize the huffman tree as a png file.

Setup

-Add this line to your application's Gemfile:

gem 'huffman'

-And then execute:

$ bundle

-Or install it yourself as:

$ gem install huffman

-Install graphviz if you want to be able to visualize trees.

Usage

Encode a text :

Huffman.encode_text(txt) # return text_encoded, dictionnary
Huffman.encode_text(txt) # return text_encoded, dictionnary

Decode a text :

Huffman.decode_text(encoded_txt, dictionnary) # return decoded_text

Encode a text file

Huffman.encode_file(file_name) # write a file_name.huffman-encoded file and a file_name.huffman-dictionnary
Huffman.encode_file(file_name) # write a file_name.huffman-encoded file and a file_name.huffman-dictionnary

Decode a text file :

Huffman.decode_file(huffman_encoded_file_path,huffman-dictionnary_path) # write a huffman-encoded-back-to-original file

Generate a Huffman tree

Huffman tree

This gem give you the ability to generate and visualize the huffman tree. You have to install graphviz before.

All you need to do is to optionally add some options to the encode_file and decode_file method :

Huffman.encode_text(txt, tree_picture: true, tree_path: "my_trees/the_tree")     # or
Huffman.encode_file(file_name, tree_picture: true, tree_path: "my_trees/the_tree") 

Contributing

  1. Fork it
  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 new Pull Request

About

The Huffman encoding compression algorithm

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%