flow_bot/message/
message_ext.rs1use super::{Message, segments::Segment};
2
3pub trait MessageExt {
4 fn extract_plain_text(&self) -> String;
5
6 fn is_plain_text(&self) -> bool;
7
8 fn extract_if_plain_text(&self) -> Option<String> {
9 if self.is_plain_text() {
10 Some(self.extract_plain_text())
11 } else {
12 None
13 }
14 }
15}
16
17impl MessageExt for Message {
18 fn extract_plain_text(&self) -> String {
19 self.iter()
20 .filter_map(|segment| match segment {
21 Segment::Text(text) => Some(text.text.clone()),
22 _ => None,
23 })
24 .collect::<Vec<String>>()
25 .join("")
26 }
27
28 fn is_plain_text(&self) -> bool {
29 self.iter()
30 .all(|segment| matches!(segment, Segment::Text(_)))
31 }
32}