ruma_events/room/message/
sanitize.rs1pub fn remove_plain_reply_fallback(mut s: &str) -> &str {
7 if (!s.starts_with("> <") && !s.starts_with("> * <")) || !s.contains('\n') {
11 return s;
12 }
13
14 while s.starts_with("> ") {
15 if let Some((_line, rest)) = s.split_once('\n') {
16 s = rest;
17 } else {
18 return "";
19 }
20 }
21
22 if let Some(rest) = s.strip_prefix('\n') {
24 rest
25 } else {
26 s
27 }
28}
29
30#[cfg(test)]
31mod tests {
32 use super::remove_plain_reply_fallback;
33
34 #[test]
35 fn remove_plain_reply() {
36 assert_eq!(
37 remove_plain_reply_fallback("No reply here\nJust a simple message"),
38 "No reply here\nJust a simple message"
39 );
40
41 assert_eq!(
42 remove_plain_reply_fallback(
43 "> <@user:notareal.hs> Replied to on\n\
44 > two lines\n\
45 \n\
46 \n\
47 This is my reply"
48 ),
49 "\nThis is my reply"
50 );
51
52 assert_eq!(remove_plain_reply_fallback("\n> Not on first line"), "\n> Not on first line");
53
54 assert_eq!(
55 remove_plain_reply_fallback("> <@user:notareal.hs> Previous message\n\n> New quote"),
56 "> New quote"
57 );
58 }
59}