1use std::collections::HashSet;
6#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
7pub enum StyleComponent {
9 #[cfg(feature = "git")]
21 pub fn components(self, interactive_terminal: bool) -> &'static [StyleComponent] {
23 StyleComponent::Auto => {
24 if interactive_terminal {
25 StyleComponent::Full.components(interactive_terminal)
27 StyleComponent::Plain.components(interactive_terminal)
30 #[cfg(feature = "git")]
31 StyleComponent::Changes => &[StyleComponent::Changes],
32 StyleComponent::Grid => &[StyleComponent::Grid],
33 StyleComponent::Rule => &[StyleComponent::Rule],
34 StyleComponent::Header => &[StyleComponent::Header],
35 StyleComponent::LineNumbers => &[StyleComponent::LineNumbers],
36 StyleComponent::Snip => &[StyleComponent::Snip],
37 StyleComponent::Full => &[
38 #[cfg(feature = "git")]
39 StyleComponent::Changes,
41 StyleComponent::Header,
42 StyleComponent::LineNumbers,
45 StyleComponent::Plain => &[],
50impl FromStr for StyleComponent {
53 fn from_str(s: &str) -> Result<Self> {
55 "auto" => Ok(StyleComponent::Auto),
56 #[cfg(feature = "git")]
57 "changes" => Ok(StyleComponent::Changes),
58 "grid" => Ok(StyleComponent::Grid),
59 "rule" => Ok(StyleComponent::Rule),
60 "header" => Ok(StyleComponent::Header),
61 "numbers" => Ok(StyleComponent::LineNumbers),
62 "snip" => Ok(StyleComponent::Snip),
63 "full" => Ok(StyleComponent::Full),
64 "plain" => Ok(StyleComponent::Plain),
65 _ => Err(format!("Unknown style '{}'", s).into()),
70#[derive(Debug, Clone, Default)]
71pub struct StyleComponents(pub HashSet<StyleComponent>);
74 pub fn new(components: &[StyleComponent]) -> StyleComponents {
75 StyleComponents(components.iter().cloned().collect())
78 #[cfg(feature = "git")]
79 pub fn changes(&self) -> bool {
80 self.0.contains(&StyleComponent::Changes)
83 pub fn grid(&self) -> bool {
84 self.0.contains(&StyleComponent::Grid)
87 pub fn rule(&self) -> bool {
88 self.0.contains(&StyleComponent::Rule)
91 pub fn header(&self) -> bool {
92 self.0.contains(&StyleComponent::Header)
95 pub fn numbers(&self) -> bool {
96 self.0.contains(&StyleComponent::LineNumbers)
99 pub fn snip(&self) -> bool {
100 self.0.contains(&StyleComponent::Snip)
103 pub fn plain(&self) -> bool {
104 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