on 720a2fb help sign in
bat/src/style.rs
81 lines 2.2 kB history raw
1use std::collections::HashSet;
2use std::str::FromStr;
4use errors::*;
6#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
7pub enum OutputComponent {
8 Auto,
9 Changes,
10 Grid,
11 Header,
12 Numbers,
13 Full,
14 Plain,
17#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
18pub enum OutputWrap {
19 Character,
20 None,
23impl OutputComponent {
24 pub fn components(&self, interactive_terminal: bool) -> &'static [OutputComponent] {
25 match *self {
26 OutputComponent::Auto => if interactive_terminal {
27 OutputComponent::Full.components(interactive_terminal)
28 } else {
29 OutputComponent::Plain.components(interactive_terminal)
30 },
31 OutputComponent::Changes => &[OutputComponent::Changes],
32 OutputComponent::Grid => &[OutputComponent::Grid],
33 OutputComponent::Header => &[OutputComponent::Header],
34 OutputComponent::Numbers => &[OutputComponent::Numbers],
35 OutputComponent::Full => &[
36 OutputComponent::Changes,
37 OutputComponent::Grid,
38 OutputComponent::Header,
39 OutputComponent::Numbers,
40 ],
41 OutputComponent::Plain => &[],
42 }
43 }
46impl FromStr for OutputComponent {
47 type Err = Error;
49 fn from_str(s: &str) -> Result<Self> {
50 match s {
51 "auto" => Ok(OutputComponent::Auto),
52 "changes" => Ok(OutputComponent::Changes),
53 "grid" => Ok(OutputComponent::Grid),
54 "header" => Ok(OutputComponent::Header),
55 "numbers" => Ok(OutputComponent::Numbers),
56 "full" => Ok(OutputComponent::Full),
57 "plain" | _ => Ok(OutputComponent::Plain),
58 }
59 }
62#[derive(Clone)]
63pub struct OutputComponents(pub HashSet<OutputComponent>);
65impl OutputComponents {
66 pub fn changes(&self) -> bool {
67 self.0.contains(&OutputComponent::Changes)
68 }
70 pub fn grid(&self) -> bool {
71 self.0.contains(&OutputComponent::Grid)
72 }
74 pub fn header(&self) -> bool {
75 self.0.contains(&OutputComponent::Header)
76 }
78 pub fn numbers(&self) -> bool {
79 self.0.contains(&OutputComponent::Numbers)
80 }