diff options
Diffstat (limited to 'src/config/general/tab_crude.rs')
-rw-r--r-- | src/config/general/tab_crude.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/config/general/tab_crude.rs b/src/config/general/tab_crude.rs new file mode 100644 index 0000000..2a8f8f3 --- /dev/null +++ b/src/config/general/tab_crude.rs @@ -0,0 +1,37 @@ +use std::convert::From; + +use serde_derive::Deserialize; + +use crate::config::option::TabOption; +use crate::tab::TabHomePage; + +fn default_home_page() -> String { + "home".to_string() +} + +#[derive(Clone, Debug, Deserialize)] +pub struct TabOptionCrude { + #[serde(default = "default_home_page")] + pub home_page: String, +} + +impl std::default::Default for TabOptionCrude { + fn default() -> Self { + Self { + home_page: default_home_page(), + } + } +} + +impl From<TabOptionCrude> for TabOption { + fn from(crude: TabOptionCrude) -> Self { + let home_page = match crude.home_page.as_str() { + "inherit" => TabHomePage::Inherit, + "home" => TabHomePage::Home, + "root" => TabHomePage::Root, + _ => TabHomePage::Home, + }; + + Self::new(home_page) + } +} |