1use std::collections::HashSet;
6#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
7pub enum StyleComponent {
19 pub fn components(self, interactive_terminal: bool) -> &'static [StyleComponent] {
21 StyleComponent::Auto => {
22 if interactive_terminal {
23 StyleComponent::Full.components(interactive_terminal)
25 StyleComponent::Plain.components(interactive_terminal)
28 StyleComponent::Changes => &[StyleComponent::Changes],
29 StyleComponent::Grid => &[StyleComponent::Grid],
30 StyleComponent::Header => &[StyleComponent::Header],
31 StyleComponent::Numbers => &[StyleComponent::Numbers],
32 StyleComponent::Snip => &[StyleComponent::Snip],
33 StyleComponent::Full => &[
34 StyleComponent::Changes,
36 StyleComponent::Header,
37 StyleComponent::Numbers,
40 StyleComponent::Plain => &[],
45impl FromStr for StyleComponent {
48 fn from_str(s: &str) -> Result<Self> {
50 "auto" => Ok(StyleComponent::Auto),
51 "changes" => Ok(StyleComponent::Changes),
52 "grid" => Ok(StyleComponent::Grid),
53 "header" => Ok(StyleComponent::Header),
54 "numbers" => Ok(StyleComponent::Numbers),
55 "snip" => Ok(StyleComponent::Snip),
56 "full" => Ok(StyleComponent::Full),
57 "plain" => Ok(StyleComponent::Plain),
58 _ => Err(format!("Unknown style '{}'", s).into()),
63#[derive(Debug, Clone, Default)]
64pub struct StyleComponents(pub HashSet<StyleComponent>);
67 pub fn new(components: &[StyleComponent]) -> StyleComponents {
68 StyleComponents(components.iter().cloned().collect())
71 #[cfg(feature = "git")]
72 pub fn changes(&self) -> bool {
73 self.0.contains(&StyleComponent::Changes)
76 pub fn grid(&self) -> bool {
77 self.0.contains(&StyleComponent::Grid)
80 pub fn header(&self) -> bool {
81 self.0.contains(&StyleComponent::Header)
84 pub fn numbers(&self) -> bool {
85 self.0.contains(&StyleComponent::Numbers)
88 pub fn snip(&self) -> bool {
89 self.0.contains(&StyleComponent::Snip)
92 pub fn plain(&self) -> bool {
93 self.0.iter().all(|c| c == &StyleComponent::Plain)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list