1use std::collections::HashSet;
6#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
7pub enum StyleComponent {
9 #[cfg(feature = "git")]
20 pub fn components(self, interactive_terminal: bool) -> &'static [StyleComponent] {
22 StyleComponent::Auto => {
23 if interactive_terminal {
24 StyleComponent::Full.components(interactive_terminal)
26 StyleComponent::Plain.components(interactive_terminal)
29 #[cfg(feature = "git")]
30 StyleComponent::Changes => &[StyleComponent::Changes],
31 StyleComponent::Grid => &[StyleComponent::Grid],
32 StyleComponent::Header => &[StyleComponent::Header],
33 StyleComponent::LineNumbers => &[StyleComponent::LineNumbers],
34 StyleComponent::Snip => &[StyleComponent::Snip],
35 StyleComponent::Full => &[
36 #[cfg(feature = "git")]
37 StyleComponent::Changes,
39 StyleComponent::Header,
40 StyleComponent::LineNumbers,
43 StyleComponent::Plain => &[],
48impl FromStr for StyleComponent {
51 fn from_str(s: &str) -> Result<Self> {
53 "auto" => Ok(StyleComponent::Auto),
54 #[cfg(feature = "git")]
55 "changes" => Ok(StyleComponent::Changes),
56 "grid" => Ok(StyleComponent::Grid),
57 "header" => Ok(StyleComponent::Header),
58 "numbers" => Ok(StyleComponent::LineNumbers),
59 "snip" => Ok(StyleComponent::Snip),
60 "full" => Ok(StyleComponent::Full),
61 "plain" => Ok(StyleComponent::Plain),
62 _ => Err(format!("Unknown style '{}'", s).into()),
67#[derive(Debug, Clone, Default)]
68pub struct StyleComponents(pub HashSet<StyleComponent>);
71 pub fn new(components: &[StyleComponent]) -> StyleComponents {
72 StyleComponents(components.iter().cloned().collect())
75 #[cfg(feature = "git")]
76 pub fn changes(&self) -> bool {
77 self.0.contains(&StyleComponent::Changes)
80 pub fn grid(&self) -> bool {
81 self.0.contains(&StyleComponent::Grid)
84 pub fn header(&self) -> bool {
85 self.0.contains(&StyleComponent::Header)
88 pub fn numbers(&self) -> bool {
89 self.0.contains(&StyleComponent::LineNumbers)
92 pub fn snip(&self) -> bool {
93 self.0.contains(&StyleComponent::Snip)
96 pub fn plain(&self) -> bool {
97 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