dprint_plugin_css/configuration/
resolve_config.rs

1use super::Configuration;
2use dprint_core::configuration::*;
3
4/// Resolves configuration from a collection of key value strings.
5///
6/// # Example
7///
8/// ```
9/// use std::collections::HashMap;
10/// use dprint_core::configuration::{resolve_global_config};
11/// use dprint_plugin_css::configuration::{resolve_config};
12///
13/// let config_map = HashMap::new(); // get a collection of key value pairs from somewhere
14/// let global_config_result = resolve_global_config(config_map, &Default::default());
15///
16/// // check global_config_result.diagnostics here...
17///
18/// let config_map = HashMap::new(); // get a collection of k/v pairs from somewhere
19/// let config_result = resolve_config(
20///     config_map,
21///     &global_config_result.config
22/// );
23///
24/// // check config_result.diagnostics here and use config_result.config
25/// ```
26pub fn resolve_config(
27    config: ConfigKeyMap,
28    global_config: &GlobalConfiguration,
29) -> ResolveConfigurationResult<Configuration> {
30    let mut diagnostics = Vec::new();
31    let mut config = config;
32
33    let resolved_config = Configuration {
34        use_tabs: get_value(
35            &mut config,
36            "useTabs",
37            global_config
38                .use_tabs
39                .unwrap_or(DEFAULT_GLOBAL_CONFIGURATION.use_tabs),
40            &mut diagnostics,
41        ),
42        indent_width: get_value(
43            &mut config,
44            "indentWidth",
45            global_config
46                .indent_width
47                .unwrap_or(DEFAULT_GLOBAL_CONFIGURATION.indent_width),
48            &mut diagnostics,
49        ),
50        line_width: get_value(
51            &mut config,
52            "lineWidth",
53            global_config
54                .line_width
55                .unwrap_or(DEFAULT_GLOBAL_CONFIGURATION.line_width),
56            &mut diagnostics,
57        ),
58        new_line_kind: get_value(
59            &mut config,
60            "newLineKind",
61            global_config
62                .new_line_kind
63                .unwrap_or(DEFAULT_GLOBAL_CONFIGURATION.new_line_kind),
64            &mut diagnostics,
65        ),
66    };
67
68    diagnostics.extend(get_unknown_property_diagnostics(config));
69
70    ResolveConfigurationResult {
71        config: resolved_config,
72        diagnostics,
73    }
74}