on fcecd97 help sign in
bat/src/style.rs
73 lines 2.1 kB history raw
1use errors::*;
2use std::collections::HashSet;
3use std::str::FromStr;
5#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
6pub enum OutputComponent {
7 Auto,
8 Changes,
9 Grid,
10 Header,
11 Numbers,
12 Full,
13 Plain,
16impl OutputComponent {
17 pub fn components(&self, interactive_terminal: bool) -> &'static [OutputComponent] {
18 match *self {
19 OutputComponent::Auto => if interactive_terminal {
20 OutputComponent::Full.components(interactive_terminal)
21 } else {
22 OutputComponent::Plain.components(interactive_terminal)
23 },
24 OutputComponent::Changes => &[OutputComponent::Changes],
25 OutputComponent::Grid => &[OutputComponent::Grid],
26 OutputComponent::Header => &[OutputComponent::Header],
27 OutputComponent::Numbers => &[OutputComponent::Numbers],
28 OutputComponent::Full => &[
29 OutputComponent::Changes,
30 OutputComponent::Grid,
31 OutputComponent::Header,
32 OutputComponent::Numbers,
33 ],
34 OutputComponent::Plain => &[],
35 }
36 }
39impl FromStr for OutputComponent {
40 type Err = Error;
42 fn from_str(s: &str) -> Result<Self> {
43 match s {
44 "auto" => Ok(OutputComponent::Auto),
45 "changes" => Ok(OutputComponent::Changes),
46 "grid" => Ok(OutputComponent::Grid),
47 "header" => Ok(OutputComponent::Header),
48 "numbers" => Ok(OutputComponent::Numbers),
49 "full" => Ok(OutputComponent::Full),
50 "plain" | _ => Ok(OutputComponent::Plain),
51 }
52 }
55pub struct OutputComponents(pub HashSet<OutputComponent>);
57impl OutputComponents {
58 pub fn changes(&self) -> bool {
59 self.0.contains(&OutputComponent::Changes)
60 }
62 pub fn grid(&self) -> bool {
63 self.0.contains(&OutputComponent::Grid)
64 }
66 pub fn header(&self) -> bool {
67 self.0.contains(&OutputComponent::Header)
68 }
70 pub fn numbers(&self) -> bool {
71 self.0.contains(&OutputComponent::Numbers)
72 }