use regex::Regex;
pub fn convert_colon(input: String, remove_extra_whitespace: bool) -> String {
let mut content = input.replace(":", ": ");
if remove_extra_whitespace {
content = Regex::new(r": +\n")
.unwrap()
.replace_all(&content, ":\n")
.to_string();
content = content.trim_end().to_string();
}
content
}
pub fn convert_semicolon(input: String, remove_extra_whitespace: bool) -> String {
let mut content = input.replace(";", "; ");
if remove_extra_whitespace {
content = Regex::new(r"; +\n")
.unwrap()
.replace_all(&content, ";\n")
.to_string();
content = content.trim_end().to_string();
}
content
}
pub fn convert_parenthesis(input: String, remove_extra_whitespace: bool) -> String {
let mut content = input.replace("(", " (").replace(")", ") ");
if remove_extra_whitespace {
content = Regex::new(r"\) (?P<match>[*,。?!:“”])")
.unwrap()
.replace_all(&content, ")${match}")
.to_string();
content = Regex::new(r"(?P<match>[*,。?!:“”]) \(")
.unwrap()
.replace_all(&content, "${match}(")
.to_string();
}
content
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_convert_colon() {
let mut input = String::from("你好:");
assert_eq!(convert_colon(input, false), "你好: ");
input = String::from(
r#"你好:
- 第一点;
- 第二点;"#,
);
assert_eq!(
convert_colon(input, true),
r#"你好:
- 第一点;
- 第二点;"#
);
}
#[test]
fn test_convert_semicolon() {
let mut input = String::from("第一分句;第二份句");
assert_eq!(
convert_semicolon(input.clone(), false),
"第一分句; 第二份句"
);
assert_eq!(convert_semicolon(input, true), "第一分句; 第二份句");
input = String::from(
r#"说几点问题:
- 第一点;
- 第二点;"#,
);
assert_eq!(
convert_semicolon(input.clone(), true),
r#"说几点问题:
- 第一点;
- 第二点;"#
);
assert_eq!(
convert_semicolon(input, false),
r#"说几点问题:
- 第一点;
- 第二点; "#
);
}
}