diff --git a/crates/biome_markdown_formatter/src/markdown/auxiliary/hard_line.rs b/crates/biome_markdown_formatter/src/markdown/auxiliary/hard_line.rs index 408814e473fb..f92ea9eb1c71 100644 --- a/crates/biome_markdown_formatter/src/markdown/auxiliary/hard_line.rs +++ b/crates/biome_markdown_formatter/src/markdown/auxiliary/hard_line.rs @@ -5,6 +5,31 @@ use biome_markdown_syntax::MdHardLine; pub(crate) struct FormatMdHardLine; impl FormatNodeRule for FormatMdHardLine { fn fmt_fields(&self, node: &MdHardLine, f: &mut MarkdownFormatter) -> FormatResult<()> { - write!(f, [format_removed(&node.value_token()?), hard_line_break()]) + let token = node.value_token()?; + let text_content = token.text(); + + if text_content.trim_end().ends_with('\\') { + // Preserve backslash form + write!( + f, + [ + format_removed(&token), + text("\\", token.text_range().start()), + hard_line_break() + ] + ) + } else { + // Given two or more spaces in MdHardLine, only two spaces has semantic meaning + // so we are adding back two spaces as required by the spec + // https://spec.commonmark.org/0.31.2/#hard-line-break + write!( + f, + [ + format_removed(&token), + text(" ", token.text_range().start()), + hard_line_break(), + ] + ) + } } } diff --git a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/break/simple.md.snap b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/break/simple.md.snap deleted file mode 100644 index cd166ffba023..000000000000 --- a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/break/simple.md.snap +++ /dev/null @@ -1,49 +0,0 @@ ---- -source: crates/biome_formatter_test/src/snapshot_builder.rs -info: markdown/break/simple.md ---- - -# Input - -```md -123 -456 - -123\ -456 - -- 123 - 123 - -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Biome -@@ -1,7 +1,7 @@ --123 -+123 - 456 - --123\ -+123 - 456 - - - 123 -``` - -# Output - -```md -123 -456 - -123 -456 - -- 123 - 123 -``` diff --git a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/break/wrap.md.snap b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/break/wrap.md.snap index fcec10f819e5..97f834f3ccdd 100644 --- a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/break/wrap.md.snap +++ b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/break/wrap.md.snap @@ -20,27 +20,27 @@ word very-very-very-very-very-very-very-very-very-very-long-word very-very-very- ```diff --- Prettier +++ Biome -@@ -1,5 +1,4 @@ --a +@@ -1,5 +1,5 @@ + a - very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word -+a +very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word --\ + \ word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word ``` # Output ```md -a +a very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word +\ word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word ``` # Lines exceeding max width of 80 characters ``` 2: very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word - 4: word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word + 5: word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word ``` diff --git a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/footnoteDefinition/sibling.md.snap b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/footnoteDefinition/sibling.md.snap index cea9929e4bdd..8b4df46b8f1e 100644 --- a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/footnoteDefinition/sibling.md.snap +++ b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/footnoteDefinition/sibling.md.snap @@ -69,7 +69,7 @@ info: markdown/footnoteDefinition/sibling.md - > 123\ - > 456 - -+[^a]: > 123 ++[^a]: > 123\ +> 456 [^a]: a - @@ -77,7 +77,7 @@ info: markdown/footnoteDefinition/sibling.md - > 123\ - > 456 - -+[^a]: > 123 ++[^a]: > 123\ +> 456 [^a]: a - @@ -104,10 +104,10 @@ info: markdown/footnoteDefinition/sibling.md [^a]: a [^a]: a [^a]: a -[^a]: > 123 +[^a]: > 123\ > 456 [^a]: a -[^a]: > 123 +[^a]: > 123\ > 456 [^a]: a [^a]: a diff --git a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-186.md.snap b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-186.md.snap index cdd223bdd8d6..40672012507a 100644 --- a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-186.md.snap +++ b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-186.md.snap @@ -18,14 +18,14 @@ bbb --- Prettier +++ Biome @@ -1,2 +1,2 @@ --aaa -+aaa - bbb + aaa +-bbb ++bbb ``` # Output ```md -aaa -bbb +aaa +bbb ``` diff --git a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-289.md.snap b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-289.md.snap deleted file mode 100644 index ae61beca6c0f..000000000000 --- a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-289.md.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: crates/biome_formatter_test/src/snapshot_builder.rs -info: markdown/spec/example-289.md ---- - -# Input - -```md -foo\ -bar - -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Biome -@@ -1,2 +1,2 @@ --foo\ -+foo - bar -``` - -# Output - -```md -foo -bar -``` diff --git a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-597.md.snap b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-597.md.snap deleted file mode 100644 index 9aef6d81cc52..000000000000 --- a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-597.md.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: crates/biome_formatter_test/src/snapshot_builder.rs -info: markdown/spec/example-597.md ---- - -# Input - -```md -foo -baz - -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Biome -@@ -1,2 +1,2 @@ --foo -+foo - baz -``` - -# Output - -```md -foo -baz -``` diff --git a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-598.md.snap b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-598.md.snap deleted file mode 100644 index 249d3e061e1a..000000000000 --- a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-598.md.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: crates/biome_formatter_test/src/snapshot_builder.rs -info: markdown/spec/example-598.md ---- - -# Input - -```md -foo\ -baz - -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Biome -@@ -1,2 +1,2 @@ --foo\ -+foo - baz -``` - -# Output - -```md -foo -baz -``` diff --git a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-599.md.snap b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-599.md.snap deleted file mode 100644 index 7a38af5962c4..000000000000 --- a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-599.md.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: crates/biome_formatter_test/src/snapshot_builder.rs -info: markdown/spec/example-599.md ---- - -# Input - -```md -foo -baz - -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Biome -@@ -1,2 +1,2 @@ --foo -+foo - baz -``` - -# Output - -```md -foo -baz -``` diff --git a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-600.md.snap b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-600.md.snap index fd7f7cb6c9a2..a185b4904cbf 100644 --- a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-600.md.snap +++ b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-600.md.snap @@ -18,15 +18,14 @@ foo --- Prettier +++ Biome @@ -1,2 +1,2 @@ --foo + foo - bar -+foo +bar ``` # Output ```md -foo +foo bar ``` diff --git a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-601.md.snap b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-601.md.snap index 11531d76d8f6..f90e5cb857b1 100644 --- a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-601.md.snap +++ b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-601.md.snap @@ -18,15 +18,14 @@ foo\ --- Prettier +++ Biome @@ -1,2 +1,2 @@ --foo\ + foo\ - bar -+foo +bar ``` # Output ```md -foo +foo\ bar ``` diff --git a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-608.md.snap b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-609.md.snap similarity index 75% rename from crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-608.md.snap rename to crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-609.md.snap index 8a2b929ab212..23aed5df912b 100644 --- a/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-608.md.snap +++ b/crates/biome_markdown_formatter/tests/specs/prettier/markdown/spec/example-609.md.snap @@ -1,12 +1,12 @@ --- source: crates/biome_formatter_test/src/snapshot_builder.rs -info: markdown/spec/example-608.md +info: markdown/spec/example-609.md --- # Input ```md -foo\ +foo ``` @@ -17,12 +17,12 @@ foo\ --- Prettier +++ Biome @@ -1 +1 @@ --foo\ -+foo +-foo ++foo ``` # Output ```md -foo +foo ``` diff --git a/justfile b/justfile index ae4fce3d085b..ad3d08484607 100644 --- a/justfile +++ b/justfile @@ -225,7 +225,7 @@ _touch file: test: cargo test --no-fail-fast -# Run tests for the crate passed as argument e.g. just test-create biome_cli +# Run tests for the crate passed as argument e.g. just test-crate biome_cli test-crate name: cargo test -p {{name}} --no-fail-fast