dprint_vue_plugin/
configuration.rs

1use dprint_core::configuration::get_unknown_property_diagnostics;
2use dprint_core::configuration::get_value;
3use dprint_core::configuration::ConfigKeyMap;
4use dprint_core::configuration::GlobalConfiguration;
5use dprint_core::configuration::ResolveConfigurationResult;
6use dprint_core::configuration::RECOMMENDED_GLOBAL_CONFIGURATION;
7use serde::Serialize;
8
9#[derive(Debug, Clone, Copy, Serialize)]
10#[serde(rename_all = "camelCase")]
11pub struct Configuration {
12    pub indent_template: bool,
13    pub use_tabs: bool,
14    pub indent_width: u8,
15}
16
17impl Default for Configuration {
18    fn default() -> Self {
19        Self {
20            indent_template: true,
21            use_tabs: RECOMMENDED_GLOBAL_CONFIGURATION.use_tabs,
22            indent_width: RECOMMENDED_GLOBAL_CONFIGURATION.indent_width,
23        }
24    }
25}
26
27impl Configuration {
28    pub(crate) fn resolve(
29        mut config: ConfigKeyMap,
30        global_config: &GlobalConfiguration,
31    ) -> ResolveConfigurationResult<Configuration> {
32        let mut diagnostics = Vec::new();
33
34        let resolved_config = Configuration {
35            indent_template: get_value(&mut config, "indentTemplate", true, &mut diagnostics),
36            use_tabs: get_value(
37                &mut config,
38                "useTabs",
39                global_config
40                    .use_tabs
41                    .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.use_tabs),
42                &mut diagnostics,
43            ),
44            indent_width: get_value(
45                &mut config,
46                "indentWidth",
47                global_config
48                    .indent_width
49                    .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.indent_width),
50                &mut diagnostics,
51            ),
52        };
53
54        diagnostics.extend(get_unknown_property_diagnostics(config));
55
56        ResolveConfigurationResult {
57            config: resolved_config,
58            diagnostics,
59        }
60    }
61}