Skip to main content

qcraft_core/render/
mod.rs

1pub mod ctx;
2pub mod policy;
3pub mod renderer;
4
5/// Escape LIKE special characters (`%`, `_`, `\`) using backslash as escape char.
6///
7/// Use this to build safe LIKE patterns from user input.
8pub 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}