Skip to content

Latest commit

 

History

History
79 lines (49 loc) · 2.22 KB

README.md

File metadata and controls

79 lines (49 loc) · 2.22 KB

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