Project

huffman

0.01
No commit activity in last 3 years
No release in over 3 years
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.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
>= 0
>= 0

Runtime

 Project Readme

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