|
@@ -1,5 +1,5 @@
|
|
|
use clap::Parser;
|
|
use clap::Parser;
|
|
|
-use huffman::cli;
|
|
|
|
|
|
|
+use huffman::{cli, hufftree, storage};
|
|
|
|
|
|
|
|
fn main() -> Result<(), std::io::Error> {
|
|
fn main() -> Result<(), std::io::Error> {
|
|
|
let args = cli::Args::parse();
|
|
let args = cli::Args::parse();
|
|
@@ -11,8 +11,16 @@ fn main() -> Result<(), std::io::Error> {
|
|
|
let inputf = working_directory.join(inputf);
|
|
let inputf = working_directory.join(inputf);
|
|
|
|
|
|
|
|
let inputf = std::fs::read_to_string(inputf)?;
|
|
let inputf = std::fs::read_to_string(inputf)?;
|
|
|
|
|
+ let char_f = huffman::hufftree::base::get_char_frequencies(&inputf);
|
|
|
|
|
|
|
|
println!("Creating Huffman Tree...");
|
|
println!("Creating Huffman Tree...");
|
|
|
|
|
+ let base_tree = huffman::hufftree::base::Hufftree::new(char_f);
|
|
|
|
|
+ let canonical_tree = hufftree::canonical::CanonicalHufftree::from_tree(base_tree);
|
|
|
|
|
+
|
|
|
|
|
+ let outputf = working_directory.join(outputf);
|
|
|
|
|
+ let mut outputf = std::fs::File::create(outputf)?;
|
|
|
|
|
+
|
|
|
|
|
+ storage::store_tree_and_text(canonical_tree, &mut outputf, &inputf).expect("Could not store the tree and text.");
|
|
|
|
|
|
|
|
Ok(())
|
|
Ok(())
|
|
|
}
|
|
}
|