Skip to content

Commit 91eca89

Browse files
dyc3Sec-ant
andauthored
refactor(parse/css): change fields in CssParserSettings to Option (#3273)
Co-authored-by: Ze-Zheng Wu <[email protected]>
1 parent 3f311fe commit 91eca89

File tree

3 files changed

+39
-28
lines changed

3 files changed

+39
-28
lines changed

crates/biome_css_parser/tests/spec_test.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ pub fn run(test_case: &str, _snapshot_name: &str, test_directory: &str, outcome_
6060

6161
let settings = settings.languages.css.parser;
6262

63-
if settings.css_modules {
63+
if settings.css_modules.unwrap_or_default() {
6464
options = options.allow_css_modules();
6565
}
6666

67-
if settings.allow_wrong_line_comments {
67+
if settings.allow_wrong_line_comments.unwrap_or_default() {
6868
options = options.allow_wrong_line_comments();
6969
}
7070

crates/biome_service/src/file_handlers/css.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ impl Default for CssLinterSettings {
7979
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
8080
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
8181
pub struct CssParserSettings {
82-
pub allow_wrong_line_comments: bool,
83-
pub css_modules: bool,
82+
pub allow_wrong_line_comments: Option<bool>,
83+
pub css_modules: Option<bool>,
8484
}
8585

8686
impl ServiceLanguage for CssLanguage {
@@ -215,10 +215,10 @@ fn parse(
215215
) -> ParseResult {
216216
let mut options = CssParserOptions {
217217
allow_wrong_line_comments: settings
218-
.map(|s| s.languages.css.parser.allow_wrong_line_comments)
218+
.and_then(|s| s.languages.css.parser.allow_wrong_line_comments)
219219
.unwrap_or_default(),
220220
css_modules: settings
221-
.map(|s| s.languages.css.parser.css_modules)
221+
.and_then(|s| s.languages.css.parser.css_modules)
222222
.unwrap_or_default(),
223223
};
224224
if let Some(settings) = settings {

crates/biome_service/src/settings.rs

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ use biome_configuration::diagnostics::InvalidIgnorePattern;
55
use biome_configuration::javascript::JsxRuntime;
66
use biome_configuration::organize_imports::OrganizeImports;
77
use biome_configuration::{
8-
push_to_analyzer_rules, BiomeDiagnostic, CssConfiguration, FilesConfiguration,
9-
FormatterConfiguration, JavascriptConfiguration, LinterConfiguration,
10-
OverrideFormatterConfiguration, OverrideLinterConfiguration,
11-
OverrideOrganizeImportsConfiguration, Overrides, PartialConfiguration, PartialCssConfiguration,
12-
PartialJavascriptConfiguration, PartialJsonConfiguration, PlainIndentStyle, Rules,
8+
push_to_analyzer_rules, BiomeDiagnostic, FilesConfiguration, FormatterConfiguration,
9+
JavascriptConfiguration, LinterConfiguration, OverrideFormatterConfiguration,
10+
OverrideLinterConfiguration, OverrideOrganizeImportsConfiguration, Overrides,
11+
PartialConfiguration, PartialCssConfiguration, PartialJavascriptConfiguration,
12+
PartialJsonConfiguration, PlainIndentStyle, Rules,
1313
};
1414
use biome_css_formatter::context::CssFormatOptions;
1515
use biome_css_parser::CssParserOptions;
@@ -216,7 +216,7 @@ impl Settings {
216216
}
217217
// css settings
218218
if let Some(css) = configuration.css {
219-
self.languages.css = CssConfiguration::from(css).into();
219+
self.languages.css = css.into();
220220
}
221221

222222
// NOTE: keep this last. Computing the overrides require reading the settings computed by the parent settings.
@@ -494,20 +494,27 @@ impl From<PartialJsonConfiguration> for LanguageSettings<JsonLanguage> {
494494
}
495495
}
496496

497-
impl From<CssConfiguration> for LanguageSettings<CssLanguage> {
498-
fn from(css: CssConfiguration) -> Self {
497+
impl From<PartialCssConfiguration> for LanguageSettings<CssLanguage> {
498+
fn from(css: PartialCssConfiguration) -> Self {
499499
let mut language_setting: LanguageSettings<CssLanguage> = LanguageSettings::default();
500500

501-
language_setting.parser.allow_wrong_line_comments = css.parser.allow_wrong_line_comments;
502-
language_setting.parser.css_modules = css.parser.css_modules;
503-
504-
language_setting.formatter.enabled = Some(css.formatter.enabled);
505-
language_setting.formatter.indent_width = css.formatter.indent_width;
506-
language_setting.formatter.indent_style = css.formatter.indent_style.map(Into::into);
507-
language_setting.formatter.line_width = css.formatter.line_width;
508-
language_setting.formatter.line_ending = css.formatter.line_ending;
509-
language_setting.formatter.quote_style = Some(css.formatter.quote_style);
510-
language_setting.linter.enabled = Some(css.linter.enabled);
501+
if let Some(parser) = css.parser {
502+
language_setting.parser.allow_wrong_line_comments = parser.allow_wrong_line_comments;
503+
language_setting.parser.css_modules = parser.css_modules;
504+
}
505+
if let Some(formatter) = css.formatter {
506+
// TODO: change RHS to `formatter.enabled` when css formatting is enabled by default
507+
language_setting.formatter.enabled = Some(formatter.enabled.unwrap_or_default());
508+
language_setting.formatter.indent_width = formatter.indent_width;
509+
language_setting.formatter.indent_style = formatter.indent_style.map(Into::into);
510+
language_setting.formatter.line_width = formatter.line_width;
511+
language_setting.formatter.line_ending = formatter.line_ending;
512+
language_setting.formatter.quote_style = formatter.quote_style;
513+
}
514+
if let Some(linter) = css.linter {
515+
// TODO: change RHS to `linter.enabled` when css linting is enabled by default
516+
language_setting.linter.enabled = Some(linter.enabled.unwrap_or_default());
517+
}
511518

512519
language_setting
513520
}
@@ -1130,8 +1137,12 @@ impl OverrideSettingPattern {
11301137

11311138
let css_parser = &self.languages.css.parser;
11321139

1133-
options.allow_wrong_line_comments = css_parser.allow_wrong_line_comments;
1134-
options.css_modules = css_parser.css_modules;
1140+
if let Some(allow_wrong_line_comments) = css_parser.allow_wrong_line_comments {
1141+
options.allow_wrong_line_comments = allow_wrong_line_comments;
1142+
}
1143+
if let Some(css_modules) = css_parser.css_modules {
1144+
options.css_modules = css_modules;
1145+
}
11351146

11361147
if let Ok(mut writeonly_cache) = self.cached_css_parser_options.write() {
11371148
let options = *options;
@@ -1365,8 +1376,8 @@ fn to_css_language_settings(
13651376
let parent_parser = &parent_settings.parser;
13661377
language_setting.parser.allow_wrong_line_comments = parser
13671378
.allow_wrong_line_comments
1368-
.unwrap_or(parent_parser.allow_wrong_line_comments);
1369-
language_setting.parser.css_modules = parser.css_modules.unwrap_or(parent_parser.css_modules);
1379+
.or(parent_parser.allow_wrong_line_comments);
1380+
language_setting.parser.css_modules = parser.css_modules.or(parent_parser.css_modules);
13701381

13711382
language_setting
13721383
}

0 commit comments

Comments
 (0)