ferrite_navigation/
config.rs

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
use crate::error::Result;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum SortOrder {
    #[serde(rename = "name")]
    ByName,
    #[serde(rename = "modified")]
    ByModified,
}

impl Default for SortOrder {
    fn default() -> Self {
        Self::ByName
    }
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NavigationConfig {
    pub sort_order:    SortOrder,
    pub reverse_order: bool,
}

impl Default for NavigationConfig {
    fn default() -> Self {
        Self {
            sort_order: SortOrder::default(), reverse_order: false
        }
    }
}

impl NavigationConfig {
    pub fn validate(&self) -> Result<()> {
        Ok(())
    }

    pub fn with_sort_order(mut self, order: SortOrder) -> Self {
        self.sort_order = order;
        self
    }

    pub fn with_reverse(mut self, reverse: bool) -> Self {
        self.reverse_order = reverse;
        self
    }
}