From 0f31453cfff47499e440117d658e6d10e1ec5680 Mon Sep 17 00:00:00 2001 From: Lucas Duailibe Date: Wed, 1 Dec 2021 12:47:27 -0300 Subject: [PATCH] [handlebars] Named blocks can't be self closing --- changelog_unreleased/handlebars/11899.md | 23 ++++++++++++++++++ src/language-handlebars/utils.js | 1 + .../basics/__snapshots__/jsfmt.spec.js.snap | 24 +++++++++++++++++++ .../format/handlebars/basics/named-block.hbs | 6 +++++ 4 files changed, 54 insertions(+) create mode 100644 changelog_unreleased/handlebars/11899.md create mode 100644 tests/format/handlebars/basics/named-block.hbs diff --git a/changelog_unreleased/handlebars/11899.md b/changelog_unreleased/handlebars/11899.md new file mode 100644 index 000000000000..13b5dc9cc3c4 --- /dev/null +++ b/changelog_unreleased/handlebars/11899.md @@ -0,0 +1,23 @@ +#### Support Glimmer's named blocks (#11899 by @duailibe) + +Prettier already supported this feature, but it converted empty named blocks to self-closing, which is not supported by the Glimmer compiler. + +See: [Glimmer's named blocks](https://emberjs.github.io/rfcs/0460-yieldable-named-blocks.html). + + +```jsx +// Input + + <:named> + + +// Prettier stable + + <:named /> + + +// Prettier main + + <:named> + +``` diff --git a/src/language-handlebars/utils.js b/src/language-handlebars/utils.js index d4831d6f1c70..22ae28ce8224 100644 --- a/src/language-handlebars/utils.js +++ b/src/language-handlebars/utils.js @@ -25,6 +25,7 @@ function isLastNodeOfSiblings(path) { } function isUppercase(string) { + return /^[A-Z]+$/.test(string); return string.toUpperCase() === string; } diff --git a/tests/format/handlebars/basics/__snapshots__/jsfmt.spec.js.snap b/tests/format/handlebars/basics/__snapshots__/jsfmt.spec.js.snap index 5cad2bbce4e0..987bfa99cf08 100644 --- a/tests/format/handlebars/basics/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/handlebars/basics/__snapshots__/jsfmt.spec.js.snap @@ -93,6 +93,30 @@ printWidth: 80 ================================================================================ `; +exports[`named-block.hbs format 1`] = ` +====================================options===================================== +parsers: ["glimmer"] +printWidth: 80 + | printWidth +=====================================input====================================== + + <:first-named-block> + <:second-named-block> + <:named-block-with-comment>{{! Do not convert to an empty element}} + <:named-block-with-content>Hello + + +=====================================output===================================== + + <:first-named-block> + <:second-named-block> + <:named-block-with-comment + >{{! Do not convert to an empty element}} + <:named-block-with-content>Hello + +================================================================================ +`; + exports[`nested-path.hbs format 1`] = ` ====================================options===================================== parsers: ["glimmer"] diff --git a/tests/format/handlebars/basics/named-block.hbs b/tests/format/handlebars/basics/named-block.hbs new file mode 100644 index 000000000000..442a5a5875e5 --- /dev/null +++ b/tests/format/handlebars/basics/named-block.hbs @@ -0,0 +1,6 @@ + + <:first-named-block> + <:second-named-block> + <:named-block-with-comment>{{! Do not convert to an empty element}} + <:named-block-with-content>Hello +