on 2eee685 help sign in
bat/src/style.rs
79 lines 2.2 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,
16#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
17pub enum OutputWrap {
18 Character,
19 None,
22impl OutputComponent {
23 pub fn components(&self, interactive_terminal: bool) -> &'static [OutputComponent] {
24 match *self {
25 OutputComponent::Auto => if interactive_terminal {
26 OutputComponent::Full.components(interactive_terminal)
27 } else {
28 OutputComponent::Plain.components(interactive_terminal)
29 },
30 OutputComponent::Changes => &[OutputComponent::Changes],
31 OutputComponent::Grid => &[OutputComponent::Grid],
32 OutputComponent::Header => &[OutputComponent::Header],
33 OutputComponent::Numbers => &[OutputComponent::Numbers],
34 OutputComponent::Full => &[
35 OutputComponent::Changes,
36 OutputComponent::Grid,
37 OutputComponent::Header,
38 OutputComponent::Numbers,
39 ],
40 OutputComponent::Plain => &[],
41 }
42 }
45impl FromStr for OutputComponent {
46 type Err = Error;
48 fn from_str(s: &str) -> Result<Self> {
49 match s {
50 "auto" => Ok(OutputComponent::Auto),
51 "changes" => Ok(OutputComponent::Changes),
52 "grid" => Ok(OutputComponent::Grid),
53 "header" => Ok(OutputComponent::Header),
54 "numbers" => Ok(OutputComponent::Numbers),
55 "full" => Ok(OutputComponent::Full),
56 "plain" | _ => Ok(OutputComponent::Plain),
57 }
58 }
61pub struct OutputComponents(pub HashSet<OutputComponent>);
63impl OutputComponents {
64 pub fn changes(&self) -> bool {
65 self.0.contains(&OutputComponent::Changes)
66 }
68 pub fn grid(&self) -> bool {
69 self.0.contains(&OutputComponent::Grid)
70 }
72 pub fn header(&self) -> bool {
73 self.0.contains(&OutputComponent::Header)
74 }
76 pub fn numbers(&self) -> bool {
77 self.0.contains(&OutputComponent::Numbers)
78 }