From b91f785509f94b799996be06f19183acb676ac01 Mon Sep 17 00:00:00 2001 From: Raamakrishnan Date: Thu, 23 Jan 2020 22:01:46 +0530 Subject: [PATCH] Add comment and file parsing. Removed Unknown --- sample/file1.sv | 0 sample/file2.sv | 0 sample/file3.sv | 0 sample/files.f | 4 ++++ src/lib.rs | 31 +++++++++++++++++++++++++------ 5 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 sample/file1.sv create mode 100644 sample/file2.sv create mode 100644 sample/file3.sv create mode 100644 sample/files.f diff --git a/sample/file1.sv b/sample/file1.sv new file mode 100644 index 0000000..e69de29 diff --git a/sample/file2.sv b/sample/file2.sv new file mode 100644 index 0000000..e69de29 diff --git a/sample/file3.sv b/sample/file3.sv new file mode 100644 index 0000000..e69de29 diff --git a/sample/files.f b/sample/files.f new file mode 100644 index 0000000..644e3aa --- /dev/null +++ b/sample/files.f @@ -0,0 +1,4 @@ +sample/file1.sv +sample/file2.sv +sample/file3.sv +sample/file4.sv \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 2ae377b..1714a7e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,12 +1,13 @@ use std::collections::HashMap; #[derive(PartialEq, Debug)] -enum LineType <'a> { +enum LineType<'a> { File(&'a str), IncDir(Vec<&'a str>), Define(HashMap<&'a str, &'a str>), Filelist(&'a str), - Unknown, + Comment, + // Unknown, } fn parse_line<'a>(line: &'a str) -> LineType<'a> { @@ -28,8 +29,11 @@ fn parse_line<'a>(line: &'a str) -> LineType<'a> { let incdirs = line.trim_start_matches("+incdir+").trim_end_matches("+"); let incdir_vec: Vec<&str> = incdirs.split("+").collect(); return LineType::IncDir(incdir_vec); + } else if line.starts_with("//") { + return LineType::Comment; } else { - return LineType::Unknown; + // Mark everything else as a File + return LineType::File(line); } } @@ -71,8 +75,23 @@ mod test { #[test] fn parse_line_incdir_multiple() { let line = "+incdir+../sample_dir1/sample_dir2+../sample_dir2/sample_dir3+sample_dir4/sample_dir5+\n"; - let incdir_vec = vec!["../sample_dir1/sample_dir2", "../sample_dir2/sample_dir3", - "sample_dir4/sample_dir5"]; + let incdir_vec = vec![ + "../sample_dir1/sample_dir2", + "../sample_dir2/sample_dir3", + "sample_dir4/sample_dir5", + ]; assert_eq!(parse_line(line), LineType::IncDir(incdir_vec)); } -} \ No newline at end of file + + #[test] + fn parse_line_comment() { + let line = "//random_comment"; + assert_eq!(parse_line(line), LineType::Comment); + } + + #[test] + fn parse_line_file() { + let line = "any_random_line_is_a_file"; + assert_eq!(parse_line(line), LineType::File("any_random_line_is_a_file")); + } +}