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