plot/lib/display/
paths_patterns.rs1use super::{BoolExt, DrawTree, Icon};
2use crate::lib::logic::{PattExp, PattRaw, PatternsToApply};
3
4impl std::fmt::Display for PattRaw {
5 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6 let raw_len = self.0.len();
8 if raw_len == 0 {
9 return write!(f, "{} {} Brak reguł wejściowych", DrawTree::ITEM_LAST, Icon::EMPTY);
10 }
11
12 let mut lines = Vec::new();
13 for (i, pat) in self.0.iter().enumerate() {
14 let prefix = DrawTree::list(i, raw_len);
15 lines.push(format!("{} {}", prefix, pat));
16 }
17 write!(f, "{}", lines.join("\n"))
18 }
19}
20
21impl std::fmt::Display for PattExp {
22 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
23 let matchers_len = self.0.len();
24 if matchers_len == 0 {
25 return write!(f, "{} {} Brak aktywnych reguł", DrawTree::ITEM_LAST, Icon::EMPTY);
26 }
27
28 let mut lines = Vec::new();
29 for (i, pattern_text) in self.0.iter().enumerate() {
30 let prefix = DrawTree::list(i, matchers_len);
31 let is_negated = pattern_text.starts_with('!');
32 let rule_icon = (!is_negated).as_symbol();
33 lines.push(format!("{} [{}] {}", prefix, rule_icon, pattern_text));
34 }
35 write!(f, "{}", lines.join("\n"))
36 }
37}
38
39impl std::fmt::Display for PatternsToApply {
40 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
41 let mut lines = Vec::new();
42
43 lines.push(format!("{}", self.patterns));
45 lines.push(format!(" {}", Icon::EXPAND));
46 lines.push(format!("{}", self.expanded));
47
48 write!(f, "{}", lines.join("\n"))
49 }
50}