summaryrefslogtreecommitdiffstats
path: root/src/config/option/linemodes.rs
blob: 372a3add0182f32cfc9f4d17aba9b7f6dd02a8a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use crate::error::{JoshutoError, JoshutoErrorKind, JoshutoResult};

#[derive(Clone, Debug, Copy, Default)]
pub enum LineMode {
    #[default]
    Size,
    MTime,
    SizeMTime,
}

impl LineMode {
    pub fn from_string(name: &str) -> JoshutoResult<LineMode> {
        match name {
            "size" => Ok(LineMode::Size),
            "mtime" => Ok(LineMode::MTime),
            "sizemtime" => Ok(LineMode::SizeMTime),
            _ => Err(JoshutoError::new(
                JoshutoErrorKind::InvalidParameters,
                format!("Linemode '{}' unknown.", name),
            )),
        }
    }

    pub fn as_str(&self) -> &'static str {
        match self {
            Self::Size => "size",
            Self::MTime => "mtime",
            Self::SizeMTime => "sizemtime",
        }
    }
}