blob: 1cd6a883c97a0ac22a23b865b142b4fe7b4630bc (
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
use serde_derive::Deserialize;
use crate::config::Flattenable;
use crate::tab::TabHomePage;
fn default_home_page() -> String {
"home".to_string()
}
#[derive(Clone, Debug, Deserialize)]
pub struct TabRawOption {
#[serde(default = "default_home_page")]
home_page: String,
}
impl std::default::Default for TabRawOption {
fn default() -> Self {
Self {
home_page: default_home_page(),
}
}
}
impl Flattenable<TabOption> for TabRawOption {
fn flatten(self) -> TabOption {
let home_page = match self.home_page.as_str() {
"inherit" => TabHomePage::Inherit,
"home" => TabHomePage::Home,
"root" => TabHomePage::Root,
_ => TabHomePage::Home,
};
TabOption::new(home_page)
}
}
#[derive(Clone, Debug)]
pub struct TabOption {
_home_page: TabHomePage,
}
impl TabOption {
pub fn new(_home_page: TabHomePage) -> Self {
Self { _home_page }
}
pub fn home_page(&self) -> TabHomePage {
self._home_page
}
}
impl std::default::Default for TabOption {
fn default() -> Self {
Self {
_home_page: TabHomePage::Home,
}
}
}
|