diff --git a/src/tcl.rs b/src/tcl.rs index 7d9fcf5..117ef4d 100644 --- a/src/tcl.rs +++ b/src/tcl.rs @@ -67,3 +67,26 @@ pub fn words(command: &str) -> Vec { return words; } + +// @name comments +// @return String +// @brief Remove all comments. +// @param tcl_script: &str +pub fn comments(tcl_script: &str) -> String { + let mut toggle_comment: bool = false; + let mut cleaned_tcl_script: String = String::new(); + for character in tcl_script.chars() { + if toggle_comment { + if character == '\n' { + toggle_comment = false; + } + } else { + cleaned_tcl_script.push(character); + if character == ';' || character == '\n' { + toggle_comment = true; + } + } + } + + return cleaned_tcl_script; +} diff --git a/src/tests.rs b/src/tests.rs index 50283a5..cf14059 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -73,9 +73,9 @@ fn test_remove_comments() { let testcase_2: &str = ";#replace_this\n"; let verify_1: &str = "test#noreplacement"; let verify_2: &str = ";"; - let case_1: &str = comments(testcase_1).as_str(); - let case_2: &str = comments(testcase_2).as_str(); + let case_1: String = comments(testcase_1); + let case_2: String = comments(testcase_2); - assert_eq!(verify_1, case_1); - assert_eq!(verify_2, case_2); + assert_eq!(verify_1, case_1.as_str()); + assert_eq!(verify_2, case_2.as_str()); }