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
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
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request