nmd_core/assembler/
assembler_configuration.rs

1use std::path::PathBuf;
2use getset::{CopyGetters, Getters, MutGetters, Setters};
3use crate::{dossier::dossier_configuration::DossierConfiguration, theme::Theme};
4
5
6#[derive(Debug, Clone, Getters, CopyGetters, MutGetters, Setters)]
7pub struct AssemblerConfiguration {
8
9    #[getset(get = "pub", set = "pub")]
10    theme: Theme,
11
12    #[getset(get_copy = "pub", set = "pub")]
13    use_remote_addons: bool,
14
15    #[getset(get_copy = "pub", set = "pub")]
16    parallelization: bool,
17
18    #[getset(get = "pub", get_mut = "pub", set = "pub")]
19    external_styles_paths: Vec<PathBuf>,
20
21    #[getset(get = "pub", get_mut = "pub", set = "pub")]
22    external_styles: Vec<String>,
23
24    #[getset(get = "pub", get_mut = "pub", set = "pub")]
25    external_scripts_paths: Vec<PathBuf>,
26
27    #[getset(get = "pub", get_mut = "pub", set = "pub")]
28    external_scripts: Vec<String>,
29}
30
31impl AssemblerConfiguration {
32    
33    pub fn new(theme: Theme, use_remote_addons: bool, parallelization: bool) -> Self {
34        Self {
35            theme,
36            use_remote_addons,
37            parallelization,
38            
39            ..Default::default()
40        }
41    }
42}
43
44impl Default for AssemblerConfiguration {
45    fn default() -> Self {
46        Self {
47            theme: Theme::default(),
48            use_remote_addons: false,
49            parallelization: false,
50            external_styles_paths: Vec::new(),
51            external_styles: Vec::new(),
52            external_scripts_paths: Vec::new(),
53            external_scripts: Vec::new(),
54        }
55    }
56}
57
58impl From<&DossierConfiguration> for AssemblerConfiguration {
59    fn from(dossier_configuration: &DossierConfiguration) -> Self {
60        Self {
61            theme: dossier_configuration.style().theme().clone(),
62            use_remote_addons: dossier_configuration.compilation().use_remote_addons(),
63            parallelization: dossier_configuration.compilation().parallelization(),
64
65            ..Default::default()
66        }
67    }
68}