logparse_pretty_print/traits/
printer.rs1use crate::Text;
2
3use super::*;
4
5pub trait PrettyPrint<'a, T: Text<'a>> {
7 fn pretty(&self, theme: &PrettyProvider) -> PrettyTree<'a, T>;
9 fn pretty_string(&self, theme: &PrettyProvider) -> String {
11 let mut buffer = String::new();
12 if let Err(e) = self.pretty(theme).render_fmt(theme.get_width(), &mut buffer) {
13 panic!("Error: {}", e);
14 }
15 buffer
16 }
17 fn pretty_colorful(&self, theme: &PrettyProvider) -> String {
19 let mut buffer = vec![];
20 if let Err(e) = self.pretty(theme).render_colored(theme.get_width(), &mut buffer) {
21 panic!("Error: {}", e);
22 }
23 match String::from_utf8(buffer) {
24 Ok(s) => s,
25 Err(e) => panic!("Error: {}", e),
26 }
27 }
28}
29
30impl<'a, T: Text<'a>> PrettyPrint<'a, T> for PrettyTree<'a, T> {
31 fn pretty(&self, _: &PrettyProvider) -> PrettyTree<'a, T> {
32 self.clone()
33 }
34}
35impl<'a, T: Text<'a>> PrettyPrint<'a, T> for &'static str {
36 fn pretty(&self, _: &PrettyProvider) -> PrettyTree<'a, T> {
37 PrettyTree::Text(T::from_static_str(self))
38 }
39}