duplicate_code 0.8.1

A tool for parsing directories scanning all the files within to find duplicate segments of code across files.
use console::Style;

use crate::model::duplicate::Duplicates;
use crate::model::indexed_file::IndexedFiles;

pub fn pretty_print_duplicates(indexed_files: IndexedFiles, duplicates: Duplicates) {
    let red = Style::new().red().bold();

    for duplicate in duplicates {
        let indexed_file = indexed_files.get(&duplicate.file_1).unwrap();

        println!(
            "{}: {} {}: {}-{}",
            red.apply_to("File"),
            duplicate.file_1,
            red.apply_to("Line Range"),
            duplicate.file_1_line_range.start,
            duplicate.file_1_line_range.end
        );
        println!(
            "{}: {} {}: {}-{}",
            red.apply_to("File"),
            duplicate.file_2,
            red.apply_to("Line Range"),
            duplicate.file_2_line_range.start,
            duplicate.file_2_line_range.end,
        );

        for line_number in duplicate.file_1_line_range.start..(duplicate.file_1_line_range.end + 1)
        {
            println!(
                "{} - {:?}",
                line_number,
                indexed_file.line_number_to_line.get(&line_number).unwrap()
            );
        }

        println!();
    }
}

pub fn json_print_duplicates(duplicates: Duplicates) {
    for duplicate in duplicates {
        println!("{}", serde_json::to_string(&duplicate).unwrap());
    }
}