diff --git a/src/language-handlebars/printer-glimmer.js b/src/language-handlebars/printer-glimmer.js index 4091ff78..502ad947 100644 --- a/src/language-handlebars/printer-glimmer.js +++ b/src/language-handlebars/printer-glimmer.js @@ -193,7 +193,37 @@ function print(path, options, print) { return concat([n.key, "=", path.call(print, "value")]); } case "TextNode": { - return n.chars.replace(/^\s+/, "").replace(/\s+$/, ""); + let leadingSpace = ""; + let trailingSpace = ""; + + // preserve a space inside of an attribute node where whitespace present, when next to mustache statement. + const inAttrNode = path.stack.indexOf("attributes") >= 0; + + if (inAttrNode) { + const parentNode = path.getParentNode(0); + const isConcat = parentNode.type === "ConcatStatement"; + if (isConcat) { + const parts = parentNode.parts; + const partIndex = parts.indexOf(n); + if (partIndex > 0) { + const partType = parts[partIndex - 1].type; + const isMustache = partType === "MustacheStatement"; + if (isMustache) { + leadingSpace = " "; + } + } + if (partIndex < parts.length - 1) { + const partType = parts[partIndex + 1].type; + const isMustache = partType === "MustacheStatement"; + if (isMustache) { + trailingSpace = " "; + } + } + } + } + return n.chars + .replace(/^\s+/, leadingSpace) + .replace(/\s+$/, trailingSpace); } case "MustacheCommentStatement": { const dashes = n.value.indexOf("}}") > -1 ? "--" : ""; diff --git a/tests/html_glimmer/__snapshots__/jsfmt.spec.js.snap b/tests/html_glimmer/__snapshots__/jsfmt.spec.js.snap index ac8fcd95..07e71157 100644 --- a/tests/html_glimmer/__snapshots__/jsfmt.spec.js.snap +++ b/tests/html_glimmer/__snapshots__/jsfmt.spec.js.snap @@ -118,21 +118,45 @@ exports[`concat-statement.hbs 1`] = ` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
+ +
+
+
+
+
+
+
+
+
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +
Hello
Hello
+
+
+
+
+
+
+
+
+
+
`; exports[`element-modifier-statement.hbs 1`] = ` diff --git a/tests/html_glimmer/concat-statement.hbs b/tests/html_glimmer/concat-statement.hbs index 72db037e..86c9cda7 100644 --- a/tests/html_glimmer/concat-statement.hbs +++ b/tests/html_glimmer/concat-statement.hbs @@ -7,3 +7,14 @@
+ +
+
+
+
+
+
+
+
+
+
\ No newline at end of file