Skip to content

Commit

Permalink
refactor(parse/css): change fields in CssParserOptions and `CssPars…
Browse files Browse the repository at this point in the history
…erSettings` to `Option`
  • Loading branch information
dyc3 committed Jun 24, 2024
1 parent fc9b1eb commit bbf793e
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 29 deletions.
2 changes: 1 addition & 1 deletion crates/biome_css_parser/src/lexer/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1105,7 +1105,7 @@ impl<'src> CssLexer<'src> {
COMMENT
}
}
Some(b'/') if self.options.allow_wrong_line_comments => {
Some(b'/') if self.options.allow_wrong_line_comments.unwrap_or_default() => {
self.advance(2);

while let Some(chr) = self.current_byte() {
Expand Down
10 changes: 5 additions & 5 deletions crates/biome_css_parser/src/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,29 +24,29 @@ pub struct CssParserOptions {
/// use `//` as a comment because it's javascript file.
///
/// Defaults to `false`.
pub allow_wrong_line_comments: bool,
pub allow_wrong_line_comments: Option<bool>,

/// Enables parsing of CSS Modules specific features.
/// Defaults to `false`.
pub css_modules: bool,
pub css_modules: Option<bool>,
}

impl CssParserOptions {
/// Allows the parser to parse wrong line comments.
pub fn allow_wrong_line_comments(mut self) -> Self {
self.allow_wrong_line_comments = true;
self.allow_wrong_line_comments = Some(true);
self
}

/// Enables parsing of css modules selectors.
pub fn allow_css_modules(mut self) -> Self {
self.css_modules = true;
self.css_modules = Some(true);
self
}

/// Checks if parsing of CSS Modules features is disabled.
pub fn is_css_modules_disabled(&self) -> bool {
!self.css_modules
!self.css_modules.unwrap_or_default()
}
}

Expand Down
4 changes: 2 additions & 2 deletions crates/biome_css_parser/tests/spec_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,11 @@ pub fn run(test_case: &str, _snapshot_name: &str, test_directory: &str, outcome_

let settings = settings.languages.css.parser;

if settings.css_modules {
if settings.css_modules.unwrap_or_default() {
options = options.allow_css_modules();
}

if settings.allow_wrong_line_comments {
if settings.allow_wrong_line_comments.unwrap_or_default() {
options = options.allow_wrong_line_comments();
}

Expand Down
4 changes: 2 additions & 2 deletions crates/biome_service/src/file_handlers/css.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@ impl Default for CssLinterSettings {
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct CssParserSettings {
pub allow_wrong_line_comments: bool,
pub css_modules: bool,
pub allow_wrong_line_comments: Option<bool>,
pub css_modules: Option<bool>,
}

impl ServiceLanguage for CssLanguage {
Expand Down
39 changes: 22 additions & 17 deletions crates/biome_service/src/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ use biome_configuration::diagnostics::InvalidIgnorePattern;
use biome_configuration::javascript::JsxRuntime;
use biome_configuration::organize_imports::OrganizeImports;
use biome_configuration::{
push_to_analyzer_rules, BiomeDiagnostic, CssConfiguration, FilesConfiguration,
FormatterConfiguration, JavascriptConfiguration, JsonConfiguration, LinterConfiguration,
push_to_analyzer_rules, BiomeDiagnostic, FilesConfiguration, FormatterConfiguration,
JavascriptConfiguration, JsonConfiguration, LinterConfiguration,
OverrideFormatterConfiguration, OverrideLinterConfiguration,
OverrideOrganizeImportsConfiguration, Overrides, PartialConfiguration, PartialCssConfiguration,
PartialJavascriptConfiguration, PartialJsonConfiguration, PlainIndentStyle, Rules,
Expand Down Expand Up @@ -216,7 +216,7 @@ impl Settings {
}
// css settings
if let Some(css) = configuration.css {
self.languages.css = CssConfiguration::from(css).into();
self.languages.css = css.into();
}

// NOTE: keep this last. Computing the overrides require reading the settings computed by the parent settings.
Expand Down Expand Up @@ -488,20 +488,25 @@ impl From<JsonConfiguration> for LanguageSettings<JsonLanguage> {
}
}

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

language_setting.parser.allow_wrong_line_comments = css.parser.allow_wrong_line_comments;
language_setting.parser.css_modules = css.parser.css_modules;

language_setting.formatter.enabled = Some(css.formatter.enabled);
language_setting.formatter.indent_width = css.formatter.indent_width;
language_setting.formatter.indent_style = css.formatter.indent_style.map(Into::into);
language_setting.formatter.line_width = css.formatter.line_width;
language_setting.formatter.line_ending = css.formatter.line_ending;
language_setting.formatter.quote_style = Some(css.formatter.quote_style);
language_setting.linter.enabled = Some(css.linter.enabled);
if let Some(parser) = css.parser {
language_setting.parser.allow_wrong_line_comments = parser.allow_wrong_line_comments;
language_setting.parser.css_modules = parser.css_modules;
}
if let Some(formatter) = css.formatter {
language_setting.formatter.enabled = formatter.enabled;
language_setting.formatter.indent_width = formatter.indent_width;
language_setting.formatter.indent_style = formatter.indent_style.map(Into::into);
language_setting.formatter.line_width = formatter.line_width;
language_setting.formatter.line_ending = formatter.line_ending;
language_setting.formatter.quote_style = formatter.quote_style;
}
if let Some(linter) = css.linter {
language_setting.linter.enabled = linter.enabled;
}

language_setting
}
Expand Down Expand Up @@ -1357,8 +1362,8 @@ fn to_css_language_settings(
let parent_parser = &parent_settings.parser;
language_setting.parser.allow_wrong_line_comments = parser
.allow_wrong_line_comments
.unwrap_or(parent_parser.allow_wrong_line_comments);
language_setting.parser.css_modules = parser.css_modules.unwrap_or(parent_parser.css_modules);
.or(parent_parser.allow_wrong_line_comments);
language_setting.parser.css_modules = parser.css_modules.or(parent_parser.css_modules);

language_setting
}
Expand Down
4 changes: 2 additions & 2 deletions crates/biome_unicode_table/src/tables.rs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit bbf793e

Please sign in to comment.