qcraft_core/render/
mod.rs1pub mod ctx;
2pub mod policy;
3pub mod renderer;
4
5pub fn escape_like_value(val: &str) -> String {
9 let mut out = String::with_capacity(val.len());
10 for ch in val.chars() {
11 match ch {
12 '\\' => out.push_str("\\\\"),
13 '%' => out.push_str("\\%"),
14 '_' => out.push_str("\\_"),
15 _ => out.push(ch),
16 }
17 }
18 out
19}
20
21#[cfg(test)]
22mod tests {
23 use super::*;
24
25 #[test]
26 fn escape_plain_text() {
27 assert_eq!(escape_like_value("hello"), "hello");
28 }
29
30 #[test]
31 fn escape_percent() {
32 assert_eq!(escape_like_value("50%"), "50\\%");
33 }
34
35 #[test]
36 fn escape_underscore() {
37 assert_eq!(escape_like_value("user_name"), "user\\_name");
38 }
39
40 #[test]
41 fn escape_backslash() {
42 assert_eq!(escape_like_value("C:\\path"), "C:\\\\path");
43 }
44
45 #[test]
46 fn escape_all_special() {
47 assert_eq!(escape_like_value("50%_\\"), "50\\%\\_\\\\");
48 }
49}