Skip to content

Commit

Permalink
temp commit
Browse files Browse the repository at this point in the history
  • Loading branch information
dyc3 committed Feb 1, 2025
1 parent 3865b5f commit 3f862a2
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 5 deletions.
17 changes: 17 additions & 0 deletions crates/biome_html_formatter/src/html/auxiliary/element.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,11 @@ impl FormatNodeRule<HtmlElement> for FormatHtmlElement {
None
};

let attr_group_id = f.group_id("element-attr-group-id");
FormatNodeRule::fmt(
&FormatHtmlOpeningElement::default().with_options(FormatHtmlOpeningElementOptions {
r_angle_is_borrowed: borrowed_r_angle.is_some(),
attribute_group_id: attr_group_id,
}),
&opening_element,
f,
Expand All @@ -130,13 +132,28 @@ impl FormatNodeRule<HtmlElement> for FormatHtmlElement {
flat_children,
expanded_children,
} => {
// write!(
// f,
// [&if_group_breaks(&hard_line_break()).with_group_id(Some(attr_group_id))]
// )?;
write!(
f,
[best_fitting![
format_args![flat_children],
format_args![expanded_children]
]]
)?;

// write!(
// f,
// [&indent_if_group_breaks(
// &best_fitting![
// format_args![flat_children],
// format_args![expanded_children]
// ],
// attr_group_id
// )]
// )?;
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::prelude::*;
use biome_formatter::{write, FormatRuleWithOptions};
use biome_formatter::{group_id::DebugGroupId, write, FormatRuleWithOptions};
use biome_html_syntax::{HtmlOpeningElement, HtmlOpeningElementFields};
#[derive(Debug, Clone, Default)]
pub(crate) struct FormatHtmlOpeningElement {
Expand All @@ -11,18 +11,21 @@ pub(crate) struct FormatHtmlOpeningElement {
/// [FormatHtmlElementList]: crate::html::lists::element_list::FormatHtmlElementList
/// [HtmlElementList]: biome_html_syntax::HtmlElementList
r_angle_is_borrowed: bool,
attribute_group_id: Option<DebugGroupId>,
}

pub(crate) struct FormatHtmlOpeningElementOptions {
/// Whether or not the r_angle is borrowed, and therefore managed by a different formatter.
pub r_angle_is_borrowed: bool,
pub attribute_group_id: DebugGroupId,
}

impl FormatRuleWithOptions<HtmlOpeningElement> for FormatHtmlOpeningElement {
type Options = FormatHtmlOpeningElementOptions;

fn with_options(mut self, options: Self::Options) -> Self {
self.r_angle_is_borrowed = options.r_angle_is_borrowed;
self.attribute_group_id = Some(options.attribute_group_id);
self
}
}
Expand All @@ -39,7 +42,9 @@ impl FormatNodeRule<HtmlOpeningElement> for FormatHtmlOpeningElement {
let bracket_same_line = f.options().bracket_same_line().value();
write!(f, [l_angle_token.format(), name.format()])?;

let attr_group_id = f.group_id("element-attr-group-id");
let attr_group_id = self
.attribute_group_id
.unwrap_or(f.group_id("element-attr-group-id"));
write!(
f,
[&group(&format_with(|f| {
Expand Down
25 changes: 22 additions & 3 deletions crates/biome_html_formatter/src/html/lists/element_list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ use crate::{
html_split_children, is_meaningful_html_text, HtmlChild, HtmlChildrenIterator, HtmlSpace,
},
};
use biome_formatter::{best_fitting, prelude::*, CstFormatContext, FormatRuleWithOptions};
use biome_formatter::{
best_fitting, group_id::DebugGroupId, prelude::*, CstFormatContext, FormatRuleWithOptions,
};
use biome_formatter::{format_args, write, VecBuffer};
use biome_html_syntax::{
AnyHtmlElement, HtmlClosingElement, HtmlClosingElementFields, HtmlElementList, HtmlRoot,
Expand All @@ -25,6 +27,7 @@ pub(crate) struct FormatHtmlElementList {

pub(crate) struct FormatHtmlElementListOptions {
pub layout: HtmlChildListLayout,
pub parent_attribute_group_id: DebugGroupId,
pub borrowed_r_angle: Option<HtmlSyntaxToken>,
pub borrowed_closing_tag: Option<HtmlClosingElement>,
}
Expand Down Expand Up @@ -546,17 +549,24 @@ enum MultilineLayout {
struct MultilineBuilder {
layout: MultilineLayout,
is_root: bool,
/// The group id for the parent `HtmlElement`'s `HtmlAttributeList`.
parent_attribute_group_id: DebugGroupId,
/// The elements that should be written as the main content. An alternating sequence of `[element, separator, element, separator, ...]`.
result: FormatResult<Vec<FormatElement>>,
/// Elements to be written before the main content.
prefix: FormatResult<Vec<FormatElement>>,
}

impl MultilineBuilder {
fn new(layout: MultilineLayout, is_root: bool) -> Self {
fn new(
layout: MultilineLayout,
is_root: bool,
parent_attribute_group_id: DebugGroupId,
) -> Self {
Self {
layout,
is_root,
parent_attribute_group_id,
result: Ok(Vec::new()),
prefix: Ok(Vec::new()),
}
Expand Down Expand Up @@ -655,6 +665,7 @@ pub(crate) struct FormatMultilineChildren {
is_root: bool,
elements: RefCell<Vec<FormatElement>>,
elements_prefix: RefCell<Vec<FormatElement>>,
parent_attribute_group_id: DebugGroupId,
}

impl Format<HtmlFormatContext> for FormatMultilineChildren {
Expand Down Expand Up @@ -715,7 +726,15 @@ impl Format<HtmlFormatContext> for FormatMultilineChildren {
// that content that breaks shouldn't be considered flat and should be
// expanded. This is in contrast to something like a concise array fill,
// which _does_ allow breaks to fit and preserves density.
write!(f, [group(&block_indent(&format_inner))])

// write!(f, [group(&block_indent(&format_inner))])
write!(
f,
[group(&indent_if_group_breaks(
&block_indent(&format_inner),
self.parent_attribute_group_id,
))]
)
}
}

Expand Down

0 comments on commit 3f862a2

Please sign in to comment.