lax_css/configuration/
mod.rs1use dprint_core::configuration::ConfigKeyMap;
2use dprint_core::configuration::GlobalConfiguration;
3use dprint_core::configuration::NewLineKind;
4use dprint_core::configuration::RECOMMENDED_GLOBAL_CONFIGURATION;
5use dprint_core::configuration::ResolveConfigurationResult;
6use dprint_core::configuration::get_unknown_property_diagnostics;
7use dprint_core::configuration::get_value;
8use serde::Deserialize;
9use serde::Serialize;
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
12#[serde(rename_all = "camelCase")]
13pub struct Configuration {
14 pub line_width: u32,
15 pub use_tabs: bool,
16 pub indent_width: u8,
17 pub new_line_kind: NewLineKind,
18 pub ignore_node_comment_text: String,
19 pub ignore_file_comment_text: String,
20 #[serde(default)]
25 pub single_line: bool,
26}
27
28pub fn resolve_config(
29 config: ConfigKeyMap,
30 global_config: &GlobalConfiguration,
31) -> ResolveConfigurationResult<Configuration> {
32 let mut config = config;
33 let mut diagnostics = Vec::new();
34 let resolved_config = Configuration {
35 line_width: get_value(
36 &mut config,
37 "lineWidth",
38 global_config
39 .line_width
40 .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.line_width),
41 &mut diagnostics,
42 ),
43 use_tabs: get_value(
44 &mut config,
45 "useTabs",
46 global_config
47 .use_tabs
48 .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.use_tabs),
49 &mut diagnostics,
50 ),
51 indent_width: get_value(
52 &mut config,
53 "indentWidth",
54 global_config
55 .indent_width
56 .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.indent_width),
57 &mut diagnostics,
58 ),
59 new_line_kind: get_value(
60 &mut config,
61 "newLineKind",
62 global_config
63 .new_line_kind
64 .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.new_line_kind),
65 &mut diagnostics,
66 ),
67 ignore_node_comment_text: get_value(
68 &mut config,
69 "ignoreNodeCommentText",
70 "dprint-ignore".to_string(),
71 &mut diagnostics,
72 ),
73 ignore_file_comment_text: get_value(
74 &mut config,
75 "ignoreFileCommentText",
76 "dprint-ignore-file".to_string(),
77 &mut diagnostics,
78 ),
79 single_line: get_value(&mut config, "singleLine", false, &mut diagnostics),
80 };
81 diagnostics.extend(get_unknown_property_diagnostics(config));
82 ResolveConfigurationResult {
83 config: resolved_config,
84 diagnostics,
85 }
86}