Compare commits

...

2 Commits

Author SHA1 Message Date
nichkara 20330f746f Implement rule to remove comments
Run the tests for a working verification of xtcl. / build (ubuntu-20.04) (push) Successful in 41s Details
2025-09-03 09:43:52 +02:00
nichkara 47bf17cb0b Add tests for comment removal 2025-09-03 09:36:54 +02:00
2 changed files with 37 additions and 1 deletions

View File

@ -67,3 +67,26 @@ pub fn words(command: &str) -> Vec<String> {
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;
}

View File

@ -1,5 +1,5 @@
#[cfg(test)]
use crate::tcl::{commands, words};
use crate::tcl::{commands, comments, words};
#[test]
fn test_commands_working() {
@ -66,3 +66,16 @@ fn test_words_quoted() {
let case: Vec<String> = words(testcase);
assert_eq!(case, verify);
}
#[test]
fn test_remove_comments() {
let testcase_1: &str = "test#noreplacement";
let testcase_2: &str = ";#replace_this\n";
let verify_1: &str = "test#noreplacement";
let verify_2: &str = ";";
let case_1: String = comments(testcase_1);
let case_2: String = comments(testcase_2);
assert_eq!(verify_1, case_1.as_str());
assert_eq!(verify_2, case_2.as_str());
}