use serde_derive::Deserialize; use std::collections::HashMap; use super::{parse_to_config_file, ConfigStructure, Flattenable}; use crate::PREVIEW_FILE; #[derive(Debug, Deserialize)] pub struct JoshutoPreviewEntry { pub program: String, pub args: Option>, } #[derive(Debug, Deserialize)] struct JoshutoRawPreview { pub extension: Option>, pub mimetype: Option>, } impl std::default::Default for JoshutoRawPreview { fn default() -> Self { JoshutoRawPreview { extension: None, mimetype: None, } } } impl Flattenable for JoshutoRawPreview { fn flatten(self) -> JoshutoPreview { let extension = self.extension.unwrap_or_default(); let mimetype = self.mimetype.unwrap_or_default(); JoshutoPreview { extension, mimetype, } } } #[derive(Debug)] pub struct JoshutoPreview { pub extension: HashMap, pub mimetype: HashMap, } impl ConfigStructure for JoshutoPreview { fn get_config() -> Self { parse_to_config_file::(PREVIEW_FILE) .unwrap_or_else(JoshutoPreview::default) } } impl std::default::Default for JoshutoPreview { fn default() -> Self { JoshutoPreview { extension: HashMap::new(), mimetype: HashMap::new(), } } }