diff --git a/src/main.rs b/src/main.rs index 05539f0..106c4b0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,7 @@ use std::{io, fs, path::PathBuf}; //TODO: implement mod file_tree :ODOT// #[derive(Parser)] #[command(name = "YUNODO")] -#[command(version = "0.3.0")] +#[command(version = "0.4.0")] #[command(about = "parse file tree for //TODO: comments", long_about = "parses a directory of files for substrings of //TODO: and outputs all instances in a parsable format")] struct Cli { /// Sets a custom config file @@ -78,7 +78,8 @@ fn main() { eprintln!("Error: {}", err); } } - out_as_md_table(output_csv_item); + // out_as_md_table(output_csv_item); + out_as_json_object(output_csv_item); } } @@ -131,6 +132,18 @@ fn out_as_md_table(input_csv:String){ println!("{}",line); } } +fn split_csv_rows(vec: &mut Vec<&str>) -> Vec { + let mut rows: Vec = Vec::new(); + if !vec.is_empty() { + let mut vec2 = vec.split_off(4); + let row = vec.join(","); + rows.push(row); + let mut remaining_rows = split_csv_rows(&mut vec2); + rows.append(&mut remaining_rows); + } + rows +} + fn split_and_print(vec: &mut Vec<&str>,table: &mut Vec) { if vec.is_empty() { return; @@ -146,3 +159,33 @@ fn split_and_print(vec: &mut Vec<&str>,table: &mut Vec) { table.push(formatted_row); split_and_print(&mut vec2, table); } +fn out_as_json_object(input_csv:String){ + let object_open_char = "{".to_string(); + let object_close_char = "}".to_string(); + let depth_counter = 0; + + let mut split_input: Vec<&str> = input_csv.split(',').collect(); + let rows:Vec = split_csv_rows(&mut split_input); + + let mut output:Vec = Vec::new(); + output.push(object_open_char); + for row in rows { + let mut cols: Vec<_> = row.split(',').collect(); + let obj_open = " {"; + let obj_close = " },"; + let comment = format!(" \"todo_comment\":\"{}\",", cols.pop().unwrap()); + let line_number = format!(" \"line_number\":\"{}\",", cols.pop().unwrap()); + let file_name = format!(" \"file_name\":\"{}\",", cols.pop().unwrap()); + let file_path = format!(" \"file_path\":\"{}\",", cols.pop().unwrap()); + output.push(obj_open.to_string()); + output.push(file_path.clone()); + output.push(file_name.clone()); + output.push(line_number.clone()); + output.push(comment.clone()); + output.push(obj_close.to_string()); + } + output.push(object_close_char); + for line in output { + println!("{}",line) + } +} diff --git a/test_out.md b/test_out.md deleted file mode 100644 index 8687b3e..0000000 --- a/test_out.md +++ /dev/null @@ -1,5 +0,0 @@ -| File Path | File Name | Line Number | Comment | -|:----------|:---------:|:-----------:|:--------| -| ./src/ | main.rs | 3 | implement mod file_tree | -| ./src/ | main.rs | 119 | iterate the input_csv and split into vec @ comma then pop vec backfilling table appending formatted values to new vec to be iterated and displayed | -| ./src/ | file_tree.rs | 5 | make sha384 digest |