lax_markup/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}
21
22pub fn resolve_config(
23 config: ConfigKeyMap,
24 global_config: &GlobalConfiguration,
25) -> ResolveConfigurationResult<Configuration> {
26 let mut config = config;
27 let mut diagnostics = Vec::new();
28 let resolved_config = Configuration {
29 line_width: get_value(
30 &mut config,
31 "lineWidth",
32 global_config
33 .line_width
34 .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.line_width),
35 &mut diagnostics,
36 ),
37 use_tabs: get_value(
38 &mut config,
39 "useTabs",
40 global_config
41 .use_tabs
42 .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.use_tabs),
43 &mut diagnostics,
44 ),
45 indent_width: get_value(
46 &mut config,
47 "indentWidth",
48 global_config
49 .indent_width
50 .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.indent_width),
51 &mut diagnostics,
52 ),
53 new_line_kind: get_value(
54 &mut config,
55 "newLineKind",
56 global_config
57 .new_line_kind
58 .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.new_line_kind),
59 &mut diagnostics,
60 ),
61 ignore_node_comment_text: get_value(
62 &mut config,
63 "ignoreNodeCommentText",
64 "dprint-ignore".to_string(),
65 &mut diagnostics,
66 ),
67 ignore_file_comment_text: get_value(
68 &mut config,
69 "ignoreFileCommentText",
70 "dprint-ignore-file".to_string(),
71 &mut diagnostics,
72 ),
73 };
74 diagnostics.extend(get_unknown_property_diagnostics(config));
75 ResolveConfigurationResult {
76 config: resolved_config,
77 diagnostics,
78 }
79}