diff --git a/crates/biome_css_formatter/src/css/statements/namespace_at_rule.rs b/crates/biome_css_formatter/src/css/statements/namespace_at_rule.rs index 79576755da17..583ae500c41f 100644 --- a/crates/biome_css_formatter/src/css/statements/namespace_at_rule.rs +++ b/crates/biome_css_formatter/src/css/statements/namespace_at_rule.rs @@ -1,10 +1,27 @@ use crate::prelude::*; -use biome_css_syntax::CssNamespaceAtRule; -use biome_rowan::AstNode; +use biome_css_syntax::{CssNamespaceAtRule, CssNamespaceAtRuleFields}; +use biome_formatter::write; #[derive(Debug, Clone, Default)] pub(crate) struct FormatCssNamespaceAtRule; impl FormatNodeRule for FormatCssNamespaceAtRule { fn fmt_fields(&self, node: &CssNamespaceAtRule, f: &mut CssFormatter) -> FormatResult<()> { - format_verbatim_node(node.syntax()).fmt(f) + let CssNamespaceAtRuleFields { + namespace_token, + prefix, + url, + semicolon_token, + } = node.as_fields(); + + write!( + f, + [ + namespace_token.format(), + space(), + prefix.format(), + space(), + url.format(), + semicolon_token.format(), + ] + ) } } diff --git a/crates/biome_css_formatter/tests/specs/css/atrule/namespace.css b/crates/biome_css_formatter/tests/specs/css/atrule/namespace.css new file mode 100644 index 000000000000..2daed36cf15c --- /dev/null +++ b/crates/biome_css_formatter/tests/specs/css/atrule/namespace.css @@ -0,0 +1,8 @@ +@namespace empty ""; +@namespace ""; +@namespace url(http://www.w3.org/1999/xhtml); +@namespace url("http://www.w3.org/1999/xhtml"); +@namespace svg url(http://www.w3.org/2000/svg); +@namespace svg url("http://www.w3.org/2000/svg"); +@namespace "http://www.w3.org/1999/xhtml"; +@namespace svg "http://www.w3.org/2000/svg"; diff --git a/crates/biome_css_formatter/tests/specs/css/atrule/namespace.css.snap b/crates/biome_css_formatter/tests/specs/css/atrule/namespace.css.snap new file mode 100644 index 000000000000..b5772e6131a2 --- /dev/null +++ b/crates/biome_css_formatter/tests/specs/css/atrule/namespace.css.snap @@ -0,0 +1,43 @@ +--- +source: crates/biome_formatter_test/src/snapshot_builder.rs +info: css/atrule/namespace.css +--- +# Input + +```css +@namespace empty ""; +@namespace ""; +@namespace url(http://www.w3.org/1999/xhtml); +@namespace url("http://www.w3.org/1999/xhtml"); +@namespace svg url(http://www.w3.org/2000/svg); +@namespace svg url("http://www.w3.org/2000/svg"); +@namespace "http://www.w3.org/1999/xhtml"; +@namespace svg "http://www.w3.org/2000/svg"; + +``` + + +============================= + +# Outputs + +## Output 1 + +----- +Indent style: Tab +Indent width: 2 +Line ending: LF +Line width: 80 +Quote style: Double Quotes +----- + +```css +@namespace empty ""; +@namespace ""; +@namespace url(http://www.w3.org/1999/xhtml); +@namespace url("http://www.w3.org/1999/xhtml"); +@namespace svg url(http://www.w3.org/2000/svg); +@namespace svg url("http://www.w3.org/2000/svg"); +@namespace "http://www.w3.org/1999/xhtml"; +@namespace svg "http://www.w3.org/2000/svg"; +``` diff --git a/crates/biome_css_formatter/tests/specs/prettier/css/atrule/namespaces.css.snap b/crates/biome_css_formatter/tests/specs/prettier/css/atrule/namespaces.css.snap deleted file mode 100644 index 6204e24b894d..000000000000 --- a/crates/biome_css_formatter/tests/specs/prettier/css/atrule/namespaces.css.snap +++ /dev/null @@ -1,174 +0,0 @@ ---- -source: crates/biome_formatter_test/src/snapshot_builder.rs -info: css/atrule/namespaces.css ---- - -# Input - -```css -@namespace toto "http://toto.example.org"; -@namespace toto url("http://toto.example.org"); -@namespace toto "http://toto.example.org" ; -@namespace toto "http://toto.example.org" ; -@namespace -toto -"http://toto.example.org" -; -@namespace - -toto - -"http://toto.example.org" - -; -@namespace very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace "http://toto.example.org"; -@namespace -very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace -"http://toto.example.org" -; -@namespace - -very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace - -"http://toto.example.org" - -; -@namespace "http://example.com/foo"; -@namespace url("http://example.com/foo"); -@namespace url("http://example.com/foo") ; -@namespace url("http://example.com/foo") ; -@namespace -url("http://example.com/foo"); -@namespace - -url("http://example.com/foo"); -@namespace url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); -@namespace -url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); -@namespace - -url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); - -``` - - -# Prettier differences - -```diff ---- Prettier -+++ Biome -@@ -1,18 +1,42 @@ - @namespace toto "http://toto.example.org"; - @namespace toto url("http://toto.example.org"); --@namespace toto "http://toto.example.org"; --@namespace toto "http://toto.example.org"; --@namespace toto "http://toto.example.org"; --@namespace toto "http://toto.example.org"; -+@namespace toto "http://toto.example.org" ; -+@namespace toto "http://toto.example.org" ; -+@namespace -+toto -+"http://toto.example.org" -+; -+@namespace -+ -+toto -+ -+"http://toto.example.org" -+ -+; - @namespace very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace "http://toto.example.org"; --@namespace very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace "http://toto.example.org"; --@namespace very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace "http://toto.example.org"; -+@namespace -+very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace -+"http://toto.example.org" -+; -+@namespace -+ -+very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace -+ -+"http://toto.example.org" -+ -+; - @namespace "http://example.com/foo"; - @namespace url("http://example.com/foo"); --@namespace url("http://example.com/foo"); --@namespace url("http://example.com/foo"); --@namespace url("http://example.com/foo"); --@namespace url("http://example.com/foo"); -+@namespace url("http://example.com/foo") ; -+@namespace url("http://example.com/foo") ; -+@namespace -+url("http://example.com/foo"); -+@namespace -+ -+url("http://example.com/foo"); - @namespace url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); --@namespace url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); --@namespace url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); -+@namespace -+url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); -+@namespace -+ -+url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); -``` - -# Output - -```css -@namespace toto "http://toto.example.org"; -@namespace toto url("http://toto.example.org"); -@namespace toto "http://toto.example.org" ; -@namespace toto "http://toto.example.org" ; -@namespace -toto -"http://toto.example.org" -; -@namespace - -toto - -"http://toto.example.org" - -; -@namespace very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace "http://toto.example.org"; -@namespace -very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace -"http://toto.example.org" -; -@namespace - -very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace - -"http://toto.example.org" - -; -@namespace "http://example.com/foo"; -@namespace url("http://example.com/foo"); -@namespace url("http://example.com/foo") ; -@namespace url("http://example.com/foo") ; -@namespace -url("http://example.com/foo"); -@namespace - -url("http://example.com/foo"); -@namespace url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); -@namespace -url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); -@namespace - -url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); -``` - -# Lines exceeding max width of 80 characters -``` - 16: @namespace very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace "http://toto.example.org"; - 18: very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace - 23: very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-namespace - 37: @namespace url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); - 39: url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); - 42: url("http://example.com/foo/very/very/very/very/very/very/very/very/very/very/very/very/very/very/very"); -``` - - diff --git a/crates/biome_css_formatter/tests/specs/prettier/css/comments/at-rules.css.snap b/crates/biome_css_formatter/tests/specs/prettier/css/comments/at-rules.css.snap index d2a3b3f18e6e..566c7939b65a 100644 --- a/crates/biome_css_formatter/tests/specs/prettier/css/comments/at-rules.css.snap +++ b/crates/biome_css_formatter/tests/specs/prettier/css/comments/at-rules.css.snap @@ -116,9 +116,9 @@ info: css/comments/at-rules.css +@import /* comment 26 */'custom.css'/* comment 27 */; /* comment 28 */ +@import /* comment 29 */ url('landscape.css') /* comment 30 */ screen /* comment 31 */ and /* comment 32 */ (/* comment 33 */orientation/* comment 34 */:/* comment 35 */landscape/* comment 36 */)/* comment 37 */; --@namespace /* comment 38 */ url(http://www.w3.org/1999/xhtml) /* comment 39 */; -+@namespace /* comment 38 */ url(http://www.w3.org/1999/xhtml) /* comment 39 */ ; - @namespace /* comment 40 */ svg /* comment 41 */ url(http://www.w3.org/2000/svg) /* comment 42 */; + @namespace /* comment 38 */ url(http://www.w3.org/1999/xhtml) /* comment 39 */; +-@namespace /* comment 40 */ svg /* comment 41 */ url(http://www.w3.org/2000/svg) /* comment 42 */; ++@namespace /* comment 40 */ /* comment 41 */ svg url(http://www.w3.org/2000/svg) /* comment 42 */; @keyframes /* comment 43 */ slidein /* comment 44 */ { } @@ -310,8 +310,8 @@ info: css/comments/at-rules.css @import /* comment 26 */'custom.css'/* comment 27 */; /* comment 28 */ @import /* comment 29 */ url('landscape.css') /* comment 30 */ screen /* comment 31 */ and /* comment 32 */ (/* comment 33 */orientation/* comment 34 */:/* comment 35 */landscape/* comment 36 */)/* comment 37 */; -@namespace /* comment 38 */ url(http://www.w3.org/1999/xhtml) /* comment 39 */ ; -@namespace /* comment 40 */ svg /* comment 41 */ url(http://www.w3.org/2000/svg) /* comment 42 */; +@namespace /* comment 38 */ url(http://www.w3.org/1999/xhtml) /* comment 39 */; +@namespace /* comment 40 */ /* comment 41 */ svg url(http://www.w3.org/2000/svg) /* comment 42 */; @keyframes /* comment 43 */ slidein /* comment 44 */ { } @@ -508,7 +508,7 @@ at-rules.css:27:19 parse ━━━━━━━━━━━━━━━━━━ 4: @import /* comment 6 */ url("bluish.css") /* comment 7 */ projection /* comment 8 */, /* comment 9 */ tv /* comment 10 */; 10: @import/* comment 21 */url("bluish.css")/* comment 22 */projection/* comment 23 */,/* comment 24 */tv/* comment 25 */; 12: @import /* comment 29 */ url('landscape.css') /* comment 30 */ screen /* comment 31 */ and /* comment 32 */ (/* comment 33 */orientation/* comment 34 */:/* comment 35 */landscape/* comment 36 */)/* comment 37 */; - 15: @namespace /* comment 40 */ svg /* comment 41 */ url(http://www.w3.org/2000/svg) /* comment 42 */; + 15: @namespace /* comment 40 */ /* comment 41 */ svg url(http://www.w3.org/2000/svg) /* comment 42 */; 51: @media /* comment 74 */ only /* comment 75 */ screen /* comment 76 */ and /* comment 77 */ ( 52: /* comment 78 */ /* comment 79 */ /* comment 80 */ min-width: 320px /* comment 81 */ 54: /* comment 84 */ /* comment 85 */ /* comment 86 */ max-width: 480px /* comment 87 */