diff --git a/CHANGELOG.unreleased.md b/CHANGELOG.unreleased.md index 6c7a41e7ac29..2e52cba94163 100644 --- a/CHANGELOG.unreleased.md +++ b/CHANGELOG.unreleased.md @@ -146,8 +146,31 @@ Previously, Prettier would sometimes ignore whitespace when formatting comments. ``` +### Handlebars: Improve comment formatting ([#6234] by [@gavinjoyce]) + +Previously, Prettier would incorrectly decode HTML entiites. + + +```hbs +// Input +

+ Some escaped characters: < > & +

+ +// Output (Prettier stable) +

+ Some escaped characters: < > & +

+ +// Output (Prettier master) +

+ Some escaped characters: < > & +

+``` + [#6209]: https://github.com/prettier/prettier/pull/6209 [#6186]: https://github.com/prettier/prettier/pull/6186 [#6186]: https://github.com/prettier/prettier/pull/6206 +[#6234]: https://github.com/prettier/prettier/pull/6234 [@duailibe]: https://github.com/duailibe [@gavinjoyce]: https://github.com/gavinjoyce diff --git a/package.json b/package.json index dcc40033593d..09c807eb4565 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "@angular/compiler": "7.2.9", "@babel/code-frame": "7.0.0", "@babel/parser": "7.2.0", - "@glimmer/syntax": "0.39.3", + "@glimmer/syntax": "0.41.0", "@iarna/toml": "2.2.3", "@typescript-eslint/typescript-estree": "1.10.2", "angular-estree-parser": "1.1.5", diff --git a/src/language-handlebars/parser-glimmer.js b/src/language-handlebars/parser-glimmer.js index a9b13b3bbbc8..3c4568b2f036 100644 --- a/src/language-handlebars/parser-glimmer.js +++ b/src/language-handlebars/parser-glimmer.js @@ -8,7 +8,8 @@ function parse(text) { return glimmer(text, { plugins: { ast: [] - } + }, + mode: "codemod" }); /* istanbul ignore next */ } catch (error) { diff --git a/src/language-handlebars/printer-glimmer.js b/src/language-handlebars/printer-glimmer.js index a35c683ac4c3..de07efce873c 100644 --- a/src/language-handlebars/printer-glimmer.js +++ b/src/language-handlebars/printer-glimmer.js @@ -8,7 +8,8 @@ const { line, group, indent, - ifBreak + ifBreak, + fill } = require("../doc").builders; // http://w3c.github.io/html/single-page.html#void-elements @@ -29,267 +30,119 @@ const voidTags = [ "wbr" ]; -// Formatter based on @glimmerjs/syntax's built-in test formatter: -// https://github.com/glimmerjs/glimmer-vm/blob/master/packages/%40glimmer/syntax/lib/generation/print.ts - -function printChildren(path, options, print) { - return concat( - path.map((childPath, childIndex) => { - const childNode = path.getValue(); - const isFirstNode = childIndex === 0; - const isLastNode = - childIndex == path.getParentNode(0).children.length - 1; - const isLastNodeInMultiNodeList = isLastNode && !isFirstNode; - const isWhitespace = isWhitespaceNode(childNode); - - if (isWhitespace && isLastNodeInMultiNodeList) { - return concat([print(childPath, options, print)]); - } else if ( - isFirstNode || - isPreviousNodeOfSomeType(childPath, [ - "ElementNode", - "CommentStatement", - "MustacheCommentStatement", - "BlockStatement" - ]) - ) { - return concat([softline, print(childPath, options, print)]); - } - return concat([print(childPath, options, print)]); - }, "children") - ); -} - function print(path, options, print) { - const n = path.getValue(); - - /* istanbul ignore if*/ - if (!n) { - return ""; - } + const node = path.getValue(); - switch (n.type) { + switch (node.type) { case "Block": case "Program": case "Template": { - return group( - join(softline, path.map(print, "body").filter(text => text !== "")) - ); + return concat([printChildren(path, options, print, "body"), hardline]); } case "ElementNode": { - const tagFirstChar = n.tag[0]; - const isLocal = n.tag.indexOf(".") !== -1; - const isGlimmerComponent = - tagFirstChar.toUpperCase() === tagFirstChar || isLocal; - const hasChildren = n.children.length > 0; - const isVoid = - (isGlimmerComponent && !hasChildren) || voidTags.indexOf(n.tag) !== -1; - const closeTagForNoBreak = isVoid ? concat([" />", softline]) : ">"; - const closeTagForBreak = isVoid ? "/>" : ">"; - const getParams = (path, print) => - indent( - concat([ - n.attributes.length ? line : "", - join(line, path.map(print, "attributes")), - - n.modifiers.length ? line : "", - join(line, path.map(print, "modifiers")), + const isVoid = voidTags.includes(node.tag); + const lineType = hardline; - n.comments.length ? line : "", - join(line, path.map(print, "comments")) + const getParams = (path, print) => { + return indent( + concat([ + node.attributes.length ? line : "", + join(line, path.map(print, "attributes")) ]) ); + }; - return concat([ - group( - concat([ - "<", - n.tag, - getParams(path, print), - n.blockParams.length ? ` as |${n.blockParams.join(" ")}|` : "", - ifBreak(softline, ""), - ifBreak(closeTagForBreak, closeTagForNoBreak) - ]) - ), - group( - concat([ - indent(printChildren(path, options, print)), - ifBreak(hasChildren ? hardline : "", ""), - !isVoid ? concat([""]) : "" - ]) - ) - ]); - } - case "BlockStatement": { - const pp = path.getParentNode(1); - const isElseIf = - pp && - pp.inverse && - pp.inverse.body.length === 1 && - pp.inverse.body[0] === n && - pp.inverse.body[0].path.parts[0] === "if"; - const hasElseIf = - n.inverse && - n.inverse.body.length === 1 && - n.inverse.body[0].type === "BlockStatement" && - n.inverse.body[0].path.parts[0] === "if"; - const indentElse = hasElseIf ? a => a : indent; - if (n.inverse) { - return concat([ - isElseIf - ? concat(["{{else ", printPathParams(path, print), "}}"]) - : printOpenBlock(path, print), - indent(concat([hardline, path.call(print, "program")])), - n.inverse && !hasElseIf ? concat([hardline, "{{else}}"]) : "", - n.inverse - ? indentElse(concat([hardline, path.call(print, "inverse")])) - : "", - isElseIf ? "" : concat([hardline, printCloseBlock(path, print)]) - ]); - } else if (isElseIf) { + const params = getParams(path, print); + + if (isVoid) { + return group(concat(["<", node.tag, params, " />"])); + } else { return concat([ - concat(["{{else ", printPathParams(path, print), "}}"]), - indent(concat([hardline, path.call(print, "program")])) + group(concat(["<", node.tag, params, ">"])), + group( + concat([ + indent(concat([lineType, printChildren(path, options, print)])), + lineType, + concat([""]) + ]) + ) ]); } - - const hasNonWhitespaceChildren = n.program.body.some( - n => !isWhitespaceNode(n) - ); - return concat([ - printOpenBlock(path, print), - group( - concat([ - indent(concat([softline, path.call(print, "program")])), - hasNonWhitespaceChildren ? hardline : softline, - printCloseBlock(path, print) - ]) - ) - ]); } - case "ElementModifierStatement": + case "BlockStatement": { + return "[BlockStatement]"; + } + // case "ElementModifierStatement": case "MustacheStatement": { - const pp = path.getParentNode(1); - const isConcat = pp && pp.type === "ConcatStatement"; return group( concat([ - n.escaped === false ? "{{{" : "{{", - printPathParams(path, print), - isConcat ? "" : softline, - n.escaped === false ? "}}}" : "}}" + node.escaped === false ? "{{{" : "{{", + path.call(print, "path"), + softline, + node.escaped === false ? "}}}" : "}}" ]) ); } case "SubExpression": { - const params = getParams(path, print); - const printedParams = - params.length > 0 - ? indent(concat([line, group(join(line, params))])) - : ""; - return group( - concat(["(", printPath(path, print), printedParams, softline, ")"]) - ); + return "[SubExpression]"; } case "AttrNode": { - const isText = n.value.type === "TextNode"; - if (isText && n.value.loc.start.column === n.value.loc.end.column) { - return concat([n.name]); + const isText = node.value.type === "TextNode"; + if (isText && node.value.loc.start.column === node.value.loc.end.column) { + return concat([node.name]); } const quote = isText ? '"' : ""; - return concat([n.name, "=", quote, path.call(print, "value"), quote]); + return concat([node.name, "=", quote, path.call(print, "value"), quote]); } case "ConcatStatement": { - return concat([ - '"', - group( - indent( - join( - softline, - path - .map(partPath => print(partPath), "parts") - .filter(a => a !== "") - ) - ) - ), - '"' - ]); + return "[ConcatStatement]"; } case "Hash": { - return concat([join(line, path.map(print, "pairs"))]); + return "[Hash]"; } case "HashPair": { - return concat([n.key, "=", path.call(print, "value")]); + return "[HashPair]"; } case "TextNode": { - const isWhitespaceOnly = !/\S/.test(n.chars); - - if ( - isWhitespaceOnly && - isPreviousNodeOfSomeType(path, ["MustacheStatement", "TextNode"]) - ) { - return " "; - } + let parts = splitByWhitespaceAndTrim(node.chars); + parts = injectLines(parts); - let leadingSpace = ""; - let trailingSpace = ""; + const startsWithWhiteSpace = /^\s/.test(node.chars); + const endsWithWhiteSpace = /\s$/.test(node.chars); - if (isNextNodeOfType(path, "MustacheStatement")) { - trailingSpace = " "; + if (startsWithWhiteSpace) { + parts.unshift(line); } - // 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 = " "; - } - } - } + if (endsWithWhiteSpace) { + parts.push(line); } - return n.chars - .replace(/^\s+/, leadingSpace) - .replace(/\s+$/, trailingSpace); + + return group(fill(parts)); } case "MustacheCommentStatement": { - const dashes = n.value.indexOf("}}") > -1 ? "--" : ""; - return concat(["{{!", dashes, n.value, dashes, "}}"]); + return "[MustacheCommentStatement]"; } case "PathExpression": { - return n.original; + return node.original; } case "BooleanLiteral": { - return String(n.value); + return "[BooleanLiteral]"; } case "CommentStatement": { - return concat([""]); + return "[CommentStatement]"; } case "StringLiteral": { - return printStringLiteral(n.value, options); + return "[StringLiteral]"; } case "NumberLiteral": { - return String(n.value); + return "[NumberLiteral]"; } case "UndefinedLiteral": { - return "undefined"; + return "[UndefinedLiteral]"; } case "NullLiteral": { - return "null"; + return "[NullLiteral]"; } /* istanbul ignore next */ @@ -298,158 +151,36 @@ function print(path, options, print) { } } -/** - * Prints a string literal with the correct surrounding quotes based on - * `options.singleQuote` and the number of escaped quotes contained in - * the string literal. This function is the glimmer equivalent of `printString` - * in `common/util`, but has differences because of the way escaped characters - * are treated in hbs string literals. - * @param {string} stringLiteral - the string literal value - * @param {object} options - the prettier options object - */ -function printStringLiteral(stringLiteral, options) { - const double = { quote: '"', regex: /"/g }; - const single = { quote: "'", regex: /'/g }; - - const preferred = options.singleQuote ? single : double; - const alternate = preferred === single ? double : single; - - let shouldUseAlternateQuote = false; - - // If `stringLiteral` contains at least one of the quote preferred for - // enclosing the string, we might want to enclose with the alternate quote - // instead, to minimize the number of escaped quotes. - if ( - stringLiteral.includes(preferred.quote) || - stringLiteral.includes(alternate.quote) - ) { - const numPreferredQuotes = (stringLiteral.match(preferred.regex) || []) - .length; - const numAlternateQuotes = (stringLiteral.match(alternate.regex) || []) - .length; - - shouldUseAlternateQuote = numPreferredQuotes > numAlternateQuotes; - } - - const enclosingQuote = shouldUseAlternateQuote ? alternate : preferred; - const escapedStringLiteral = stringLiteral.replace( - enclosingQuote.regex, - `\\${enclosingQuote.quote}` - ); - - return `${enclosingQuote.quote}${escapedStringLiteral}${enclosingQuote.quote}`; -} - -function printPath(path, print) { - return path.call(print, "path"); -} - -function getParams(path, print) { - const node = path.getValue(); - let parts = []; - - if (node.params.length > 0) { - parts = parts.concat(path.map(print, "params")); - } - - if (node.hash && node.hash.pairs.length > 0) { - parts.push(path.call(print, "hash")); - } - return parts; -} - -function printPathParams(path, print) { - let parts = []; - - parts.push(printPath(path, print)); - parts = parts.concat(getParams(path, print)); - - return indent(group(join(line, parts))); -} - -function printBlockParams(path) { - const block = path.getValue(); - if (!block.program || !block.program.blockParams.length) { - return ""; - } - return concat([" as |", block.program.blockParams.join(" "), "|"]); -} - -function printOpenBlock(path, print) { +function printChildren(path, options, print, key = "children") { return group( - concat([ - "{{#", - printPathParams(path, print), - printBlockParams(path), + join( softline, - "}}" - ]) + path.map((childPath, _childIndex) => { + return print(childPath, options, print); + }, key) + ) ); } -function printCloseBlock(path, print) { - return concat(["{{/", path.call(print, "path"), "}}"]); -} - -function isWhitespaceNode(node) { - return node.type === "TextNode" && !/\S/.test(node.chars); +function splitByWhitespaceAndTrim(text) { + return text + .replace(/^\s+/, "") + .replace(/\s+$/, "") + .split(/\s+/); } -function getPreviousNode(path) { - const node = path.getValue(); - const parentNode = path.getParentNode(0); - - const children = parentNode.children; - if (children) { - const nodeIndex = children.indexOf(node); - if (nodeIndex > 0) { - const previousNode = children[nodeIndex - 1]; - return previousNode; +function injectLines(items) { + let newItems = []; + for (let i = 0; i < items.length; i++) { + if (i !== 0) { + newItems.push(line); } + newItems.push(items[i]); } -} -function getNextNode(path) { - const node = path.getValue(); - const parentNode = path.getParentNode(0); - - const children = parentNode.children; - if (children) { - const nodeIndex = children.indexOf(node); - if (nodeIndex < children.length) { - const nextNode = children[nodeIndex + 1]; - return nextNode; - } - } -} - -function isPreviousNodeOfSomeType(path, types) { - const previousNode = getPreviousNode(path); - - if (previousNode) { - return types.some(type => previousNode.type === type); - } - return false; -} - -function isNextNodeOfType(path, type) { - const nextNode = getNextNode(path); - return nextNode && nextNode.type === type; -} - -function clean(ast, newObj) { - delete newObj.loc; - - // (Glimmer/HTML) ignore TextNode whitespace - if (ast.type === "TextNode") { - if (ast.chars.replace(/\s+/, "") === "") { - return null; - } - newObj.chars = ast.chars.replace(/^\s+/, "").replace(/\s+$/, ""); - } + return newItems; } module.exports = { - print, - massageAstNode: clean + print }; diff --git a/tests/glimmer/__snapshots__/jsfmt.spec.js.snap b/tests/glimmer/__snapshots__/jsfmt.spec.js.snap index 0d8fe9aac35a..84986d90ee56 100644 --- a/tests/glimmer/__snapshots__/jsfmt.spec.js.snap +++ b/tests/glimmer/__snapshots__/jsfmt.spec.js.snap @@ -1,1629 +1,91 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`block-statement.hbs 1`] = ` +exports[`curleys.hbs 1`] = ` ====================================options===================================== parsers: ["glimmer"] printWidth: 80 | printWidth =====================================input====================================== -{{#block param hashKey=hashValue as |blockParam|}} - Hello -{{/block}} - -{{#block almost80CharacterLongPositionalParamThatIsFirstAlmost80Chars helloWorldParam key=here}} -{{/block}} - -{{#block param param param param param param param hashKey=hashValue as |blockParam|}} - Hello -{{/block}} - -{{#block param param param param param param param hashKey=HashValue hashKey=hashValue}} - Hello -{{/block}} - -{{#block param param param param param param param param param param param param param}} - Hello -{{/block}} - -{{#block hashKey=HashValue hashKey=hashValue hashKey=HashValue hashKey=hashValue hashKey=HashValue}} - Hello -{{/block}} - -{{#block}} - {{#block}} - hello - {{/block}} -{{/block}} - -{{#block}} - {{#block param}} - hello - {{/block}} -{{/block}} - -{{#block param}} - {{#block param}} - hello - {{/block}} -{{/block}} - -{{#block}} - hello -{{/block}} - - - {{firstName}} - - - - {{firstName}} {{lastName}} - - -=====================================output===================================== -{{#block param hashKey=hashValue as |blockParam|}} - Hello -{{/block}} -{{#block - almost80CharacterLongPositionalParamThatIsFirstAlmost80Chars - helloWorldParam - key=here -}}{{/block}} -{{#block - param - param - param - param - param - param - param - hashKey=hashValue as |blockParam| -}} - Hello -{{/block}} -{{#block - param - param - param - param - param - param - param - hashKey=HashValue - hashKey=hashValue -}} - Hello -{{/block}} -{{#block - param - param - param - param - param - param - param - param - param - param - param - param - param -}} - Hello -{{/block}} -{{#block - hashKey=HashValue - hashKey=hashValue - hashKey=HashValue - hashKey=hashValue - hashKey=HashValue -}} - Hello -{{/block}} -{{#block}} - {{#block}} - hello - {{/block}} -{{/block}} -{{#block}} - {{#block param}} - hello - {{/block}} -{{/block}} -{{#block param}} - {{#block param}} - hello - {{/block}} -{{/block}} -{{#block}} - hello -{{/block}} - - {{firstName}} - - - {{firstName}} {{lastName}} - -================================================================================ -`; - -exports[`block-statement.hbs 2`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 -singleQuote: true - | printWidth -=====================================input====================================== -{{#block param hashKey=hashValue as |blockParam|}} - Hello -{{/block}} - -{{#block almost80CharacterLongPositionalParamThatIsFirstAlmost80Chars helloWorldParam key=here}} -{{/block}} - -{{#block param param param param param param param hashKey=hashValue as |blockParam|}} - Hello -{{/block}} - -{{#block param param param param param param param hashKey=HashValue hashKey=hashValue}} - Hello -{{/block}} - -{{#block param param param param param param param param param param param param param}} - Hello -{{/block}} - -{{#block hashKey=HashValue hashKey=hashValue hashKey=HashValue hashKey=hashValue hashKey=HashValue}} - Hello -{{/block}} - -{{#block}} - {{#block}} - hello - {{/block}} -{{/block}} - -{{#block}} - {{#block param}} - hello - {{/block}} -{{/block}} - -{{#block param}} - {{#block param}} - hello - {{/block}} -{{/block}} - -{{#block}} - hello -{{/block}} - - - {{firstName}} - - - - {{firstName}} {{lastName}} - - -=====================================output===================================== -{{#block param hashKey=hashValue as |blockParam|}} - Hello -{{/block}} -{{#block - almost80CharacterLongPositionalParamThatIsFirstAlmost80Chars - helloWorldParam - key=here -}}{{/block}} -{{#block - param - param - param - param - param - param - param - hashKey=hashValue as |blockParam| -}} - Hello -{{/block}} -{{#block - param - param - param - param - param - param - param - hashKey=HashValue - hashKey=hashValue -}} - Hello -{{/block}} -{{#block - param - param - param - param - param - param - param - param - param - param - param - param - param -}} - Hello -{{/block}} -{{#block - hashKey=HashValue - hashKey=hashValue - hashKey=HashValue - hashKey=hashValue - hashKey=HashValue -}} - Hello -{{/block}} -{{#block}} - {{#block}} - hello - {{/block}} -{{/block}} -{{#block}} - {{#block param}} - hello - {{/block}} -{{/block}} -{{#block param}} - {{#block param}} - hello - {{/block}} -{{/block}} -{{#block}} - hello -{{/block}} - - {{firstName}} - - - {{firstName}} {{lastName}} - -================================================================================ -`; - -exports[`comment.hbs 1`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 - | printWidth -=====================================input====================================== -
- {{! Foo }} - {{#if @foo}} - Foo - {{/if}} - - {{! Bar }} - {{#if @bar}} - Bar - {{/if}} -
-=====================================output===================================== -
- {{! Foo }} - {{#if @foo}} - Foo - {{/if}} - {{! Bar }} - {{#if @bar}} - Bar - {{/if}} -
-================================================================================ -`; - -exports[`comment.hbs 2`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 -singleQuote: true - | printWidth -=====================================input====================================== -
- {{! Foo }} - {{#if @foo}} - Foo - {{/if}} - - {{! Bar }} - {{#if @bar}} - Bar - {{/if}} -
-=====================================output===================================== -
- {{! Foo }} - {{#if @foo}} - Foo - {{/if}} - {{! Bar }} - {{#if @bar}} - Bar - {{/if}} -
-================================================================================ -`; - -exports[`component.hbs 1`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 - | printWidth -=====================================input====================================== - -{{@greeting}}, {{@name}}! - -
- -
- -
- - hello - - - - - - - - - - - - -
Hello
- -=====================================output===================================== - -{{@greeting}} -, -{{@name}} -! -
- -
-
- - - hello - - - - - - - -
- Hello -
-================================================================================ -`; - -exports[`component.hbs 2`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 -singleQuote: true - | printWidth -=====================================input====================================== - -{{@greeting}}, {{@name}}! - -
- -
- -
- - hello - - - - - - - - - - - - -
Hello
- +hi {{alex}}, {{ben}} and {{sophie}} =====================================output===================================== - -{{@greeting}} -, -{{@name}} -! -
- -
-
- - - hello - - - - - - - -
- Hello -
-================================================================================ -`; - -exports[`concat-statement.hbs 1`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 - | printWidth -=====================================input====================================== -
- Hello -
- -
- Hello -
- - - -
-
-
-
-
-
-
-
-
-
-=====================================output===================================== -
- Hello -
-
- Hello -
- -
-
-
-
-
-
-
-
-
-
================================================================================ `; -exports[`concat-statement.hbs 2`] = ` +exports[`simple-elements.hbs 1`] = ` ====================================options===================================== parsers: ["glimmer"] printWidth: 80 -singleQuote: true | printWidth =====================================input====================================== -
- Hello -
- -
- Hello -
+

aaa

- - -
-
-
-
-
-
-
-
-
-
-=====================================output===================================== -
- Hello -
-
bar

- {{if goodbye true}}" -> - Hello -
- -
-
-
-
-
-
-
-
-
-
-================================================================================ -`; - -exports[`curly.hbs 1`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 - | printWidth -=====================================input====================================== -

Your username is @{{name}}

-

Hi {{firstName}} {{lastName}}

+
=====================================output=====================================

- Your username is @{{name}} + aaa

-

- Hi {{firstName}} {{lastName}} -

-================================================================================ -`; -exports[`curly.hbs 2`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 -singleQuote: true - | printWidth -=====================================input====================================== -

Your username is @{{name}}

-

Hi {{firstName}} {{lastName}}

-=====================================output===================================== -

- Your username is @{{name}} -

- Hi {{firstName}} {{lastName}} + aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmmm nnnn oooo + pppp qqqq rrrr ssss tttt

-================================================================================ -`; - -exports[`element-modifier-statement.hbs 1`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 - | printWidth -=====================================input====================================== -
- Hello -
- -
- Hello -
- -
- Hello -
- -
- Hello -
- -=====================================output===================================== -
- Hello -
-
- Hello -
-
- Hello -
-
- Hello -
-================================================================================ -`; -exports[`element-modifier-statement.hbs 2`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 -singleQuote: true - | printWidth -=====================================input====================================== -
- Hello -
- -
- Hello -
- -
- Hello -
- -
- Hello -
- -=====================================output===================================== -
- Hello -
-
- Hello -
-
- Hello -
-
- Hello -
-================================================================================ -`; - -exports[`element-node.hbs 1`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 - | printWidth -=====================================input====================================== -
- Hello -
- -
- Hello -
- -
- hi -
- -
- A long enough string to trigger a line break that would prevent wrapping. -
- -
- A long enough string to trigger a line break that would prevent wrapping more. -
- -
- A long enough string to trigger a line break that would prevent wrapping more and more. -
- -
- {{#block}} - {{hello}} - {{/block}} -
- -
- {{hello}} -
- -
- - -=====================================output===================================== -
- Hello -
-
- Hello -
-
- hi -
-
- A long enough string to trigger a line break that would prevent wrapping. -
-
- A long enough string to trigger a line break that would prevent wrapping more. -
-
- A long enough string to trigger a line break that would prevent wrapping more and more. -
-
- {{#block}} - {{hello}} - {{/block}} -
-
- {{hello}} -
-
- -================================================================================ -`; - -exports[`element-node.hbs 2`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 -singleQuote: true - | printWidth -=====================================input====================================== -
- Hello -
- -
- Hello -
- -
- hi -
- -
- A long enough string to trigger a line break that would prevent wrapping. -
- -
- A long enough string to trigger a line break that would prevent wrapping more. -
- -
- A long enough string to trigger a line break that would prevent wrapping more and more. -
- -
- {{#block}} - {{hello}} - {{/block}} -
- -
- {{hello}} -
- -
- - -=====================================output===================================== -
- Hello -
-
- Hello -
-
- hi -
-
- A long enough string to trigger a line break that would prevent wrapping. -
-
- A long enough string to trigger a line break that would prevent wrapping more. -
-
- A long enough string to trigger a line break that would prevent wrapping more and more. -
-
- {{#block}} - {{hello}} - {{/block}} -
- {{hello}} + 111 +

+ 222 +

-
- -================================================================================ -`; - -exports[`else-if.hbs 1`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 - | printWidth -=====================================input====================================== -{{#if a}} - b -{{else if c}} - d -{{else}} - e -{{/if}} - -{{#if a}} - b -{{else if c}} - d -{{else}} - hello - {{#if f}} - g - {{/if}} - e -{{/if}} -{{#if a}} - b -{{else if c}} - d -{{else if e}} - f -{{else if g}} - h -{{else}} - j -{{/if}} - -
- {{#if a}} - b - {{else if c}} - d - {{else}} - e - {{/if}} -
+
+
-
-
- {{#if a}} - b - {{else if c}} - d - {{else}} - e - {{/if}} -
-
- -{{#if a}} - b -{{else}} - {{#each c as |d|}} - e - {{/each}} -{{/if}} - -{{#if a}} - {{#if b}} - ab - {{else if c}} - ac - {{/if}} -{{/if}} - -{{#if a}} - a -
b
- c -{{else}} - {{#if c}} - a - b -
c
- {{/if}} -
a
- b - c -{{/if}} - -=====================================output===================================== -{{#if a}} - b -{{else if c}} - d -{{else}} - e -{{/if}} -{{#if a}} - b -{{else if c}} - d -{{else}} - hello - {{#if f}} - g - {{/if}} - e -{{/if}} -{{#if a}} - b -{{else if c}} - d -{{else if e}} - f -{{else if g}} - h -{{else}} - j -{{/if}} -
- {{#if a}} - b - {{else if c}} - d - {{else}} - e - {{/if}} -
-
-
- {{#if a}} - b - {{else if c}} - d - {{else}} - e - {{/if}} -
-
-{{#if a}} - b -{{else}} - {{#each c as |d|}} - e - {{/each}} -{{/if}} -{{#if a}} - {{#if b}} - ab - {{else if c}} - ac - {{/if}} -{{/if}} -{{#if a}} - a -
- b -
- c -{{else}} - {{#if c}} - a - b -
- c -
- {{/if}} -
- a -
- b - c -{{/if}} -================================================================================ -`; - -exports[`else-if.hbs 2`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 -singleQuote: true - | printWidth -=====================================input====================================== -{{#if a}} - b -{{else if c}} - d -{{else}} - e -{{/if}} - -{{#if a}} - b -{{else if c}} - d -{{else}} - hello - {{#if f}} - g - {{/if}} - e -{{/if}} - -{{#if a}} - b -{{else if c}} - d -{{else if e}} - f -{{else if g}} - h -{{else}} - j -{{/if}} - -
- {{#if a}} - b - {{else if c}} - d - {{else}} - e - {{/if}} -
- -
-
- {{#if a}} - b - {{else if c}} - d - {{else}} - e - {{/if}} -
-
- -{{#if a}} - b -{{else}} - {{#each c as |d|}} - e - {{/each}} -{{/if}} - -{{#if a}} - {{#if b}} - ab - {{else if c}} - ac - {{/if}} -{{/if}} - -{{#if a}} - a -
b
- c -{{else}} - {{#if c}} - a - b -
c
- {{/if}} -
a
- b - c -{{/if}} - -=====================================output===================================== -{{#if a}} - b -{{else if c}} - d -{{else}} - e -{{/if}} -{{#if a}} - b -{{else if c}} - d -{{else}} - hello - {{#if f}} - g - {{/if}} - e -{{/if}} -{{#if a}} - b -{{else if c}} - d -{{else if e}} - f -{{else if g}} - h -{{else}} - j -{{/if}} -
- {{#if a}} - b - {{else if c}} - d - {{else}} - e - {{/if}} -
-
-
- {{#if a}} - b - {{else if c}} - d - {{else}} - e - {{/if}} -
-
-{{#if a}} - b -{{else}} - {{#each c as |d|}} - e - {{/each}} -{{/if}} -{{#if a}} - {{#if b}} - ab - {{else if c}} - ac - {{/if}} -{{/if}} -{{#if a}} - a -
- b -
- c -{{else}} - {{#if c}} - a - b -
- c -
- {{/if}} -
- a -
- b - c -{{/if}} -================================================================================ -`; - -exports[`literals.hbs 1`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 - | printWidth -=====================================input====================================== -{{mustache true}} -{{mustache 5}} -{{mustache undefined}} -{{mustache null}} - -{{! Mustache Comment}} -{{!-- Mustache Comment }} --}} - -=====================================output===================================== -{{mustache true}} -{{mustache 5}} -{{mustache undefined}} -{{mustache null}} - -{{! Mustache Comment}} -{{!-- Mustache Comment }} --}} -================================================================================ -`; - -exports[`literals.hbs 2`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 -singleQuote: true - | printWidth -=====================================input====================================== -{{mustache true}} -{{mustache 5}} -{{mustache undefined}} -{{mustache null}} - -{{! Mustache Comment}} -{{!-- Mustache Comment }} --}} +

+ bar +

-=====================================output===================================== -{{mustache true}} -{{mustache 5}} -{{mustache undefined}} -{{mustache null}} - -{{! Mustache Comment}} -{{!-- Mustache Comment }} --}} -================================================================================ -`; +
-exports[`loop.hbs 1`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 - | printWidth -=====================================input====================================== -
    - {{#each speakers key="@index" as |speaker|}} -
  • {{speaker}}
  • - {{/each}} -
- -=====================================output===================================== -
    - {{#each speakers key="@index" as |speaker|}} -
  • - {{speaker}} -
  • - {{/each}} -
================================================================================ `; -exports[`loop.hbs 2`] = ` +exports[`simple-text.hbs 1`] = ` ====================================options===================================== parsers: ["glimmer"] printWidth: 80 -singleQuote: true | printWidth =====================================input====================================== -
    - {{#each speakers key="@index" as |speaker|}} -
  • {{speaker}}
  • - {{/each}} -
- -=====================================output===================================== -
    - {{#each speakers key='@index' as |speaker|}} -
  • - {{speaker}} -
  • - {{/each}} -
-================================================================================ -`; +hello -exports[`string-literals.hbs 1`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 - | printWidth -=====================================input====================================== -{{"abc"}} -{{'abc'}} -{{" \\" \\" ' more double quote than single quote "}} -{{' \\' \\' " more single quote than double quote '}} -{{' " \\' \\" \\\\ '}} -{{" \\" \\' ' \\\\ "}} +a b c +1 2 3 =====================================output===================================== -{{"abc"}} -{{"abc"}} -{{' " " \\' more double quote than single quote '}} -{{" ' ' \\" more single quote than double quote "}} -{{' " \\' \\" \\\\ '}} -{{" \\" \\' ' \\\\ "}} -================================================================================ -`; - -exports[`string-literals.hbs 2`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 -singleQuote: true - | printWidth -=====================================input====================================== -{{"abc"}} -{{'abc'}} -{{" \\" \\" ' more double quote than single quote "}} -{{' \\' \\' " more single quote than double quote '}} -{{' " \\' \\" \\\\ '}} -{{" \\" \\' ' \\\\ "}} +hello a b c 1 2 3 -=====================================output===================================== -{{'abc'}} -{{'abc'}} -{{' " " \\' more double quote than single quote '}} -{{" ' ' \\" more single quote than double quote "}} -{{' " \\' \\" \\\\ '}} -{{" \\" \\' ' \\\\ "}} ================================================================================ `; -exports[`sub-expressions.hbs 1`] = ` +exports[`simple-wrapping-text.hbs 1`] = ` ====================================options===================================== parsers: ["glimmer"] printWidth: 80 | printWidth =====================================input====================================== -
- -{{#block - (concat - (service) - (helper param hashPair=Value) - (largeNameHelper param param param param hashPair=value hashPair=value hashPair=Value) - hashPair=(helper param param param param param param hashPair=value hashPair=value hashPair=value) - hashPair=(does not need a line break due to being under 80 chars long) - ) -}} - -{{/block}} - -{{foobar-sub-component/foobar-foo - hook="stringLiteral" - foo= - (t - (concat "stringLiteral" (get blockParam "stringLiteral") hash=hash hash=hash) - foo=(simple-helper (hash hashKey=blockParam.foo assignParam=blockParam.bar)) - ) -}} - +aaaaaa bbbbbbb ccccccc dddddd eeeeee ffffff gggggg hhhhh iiiiii jjjjj kkkkkk llllll mmmmm =====================================output===================================== -
-{{#block - (concat - (service) - (helper param hashPair=Value) - (largeNameHelper - param param param param hashPair=value hashPair=value hashPair=Value - ) - hashPair=(helper - param - param - param - param - param - param - hashPair=value - hashPair=value - hashPair=value - ) - hashPair=(does not need a line break due to being under 80 chars long) - ) -}}{{/block}} -{{foobar-sub-component/foobar-foo - hook="stringLiteral" - foo=(t - (concat - "stringLiteral" (get blockParam "stringLiteral") hash=hash hash=hash - ) - foo=(simple-helper (hash hashKey=blockParam.foo assignParam=blockParam.bar)) - ) -}} -================================================================================ -`; - -exports[`sub-expressions.hbs 2`] = ` -====================================options===================================== -parsers: ["glimmer"] -printWidth: 80 -singleQuote: true - | printWidth -=====================================input====================================== -
- -{{#block - (concat - (service) - (helper param hashPair=Value) - (largeNameHelper param param param param hashPair=value hashPair=value hashPair=Value) - hashPair=(helper param param param param param param hashPair=value hashPair=value hashPair=value) - hashPair=(does not need a line break due to being under 80 chars long) - ) -}} +aaaaaa bbbbbbb ccccccc dddddd eeeeee ffffff gggggg hhhhh iiiiii jjjjj kkkkkk +llllll mmmmm -{{/block}} - -{{foobar-sub-component/foobar-foo - hook="stringLiteral" - foo= - (t - (concat "stringLiteral" (get blockParam "stringLiteral") hash=hash hash=hash) - foo=(simple-helper (hash hashKey=blockParam.foo assignParam=blockParam.bar)) - ) -}} - -=====================================output===================================== -
-{{#block - (concat - (service) - (helper param hashPair=Value) - (largeNameHelper - param param param param hashPair=value hashPair=value hashPair=Value - ) - hashPair=(helper - param - param - param - param - param - param - hashPair=value - hashPair=value - hashPair=value - ) - hashPair=(does not need a line break due to being under 80 chars long) - ) -}}{{/block}} -{{foobar-sub-component/foobar-foo - hook='stringLiteral' - foo=(t - (concat - 'stringLiteral' (get blockParam 'stringLiteral') hash=hash hash=hash - ) - foo=(simple-helper (hash hashKey=blockParam.foo assignParam=blockParam.bar)) - ) -}} ================================================================================ `; diff --git a/tests/glimmer/block-statement.hbs b/tests/glimmer/block-statement.hbs deleted file mode 100644 index 78b7e47d7cc5..000000000000 --- a/tests/glimmer/block-statement.hbs +++ /dev/null @@ -1,52 +0,0 @@ -{{#block param hashKey=hashValue as |blockParam|}} - Hello -{{/block}} - -{{#block almost80CharacterLongPositionalParamThatIsFirstAlmost80Chars helloWorldParam key=here}} -{{/block}} - -{{#block param param param param param param param hashKey=hashValue as |blockParam|}} - Hello -{{/block}} - -{{#block param param param param param param param hashKey=HashValue hashKey=hashValue}} - Hello -{{/block}} - -{{#block param param param param param param param param param param param param param}} - Hello -{{/block}} - -{{#block hashKey=HashValue hashKey=hashValue hashKey=HashValue hashKey=hashValue hashKey=HashValue}} - Hello -{{/block}} - -{{#block}} - {{#block}} - hello - {{/block}} -{{/block}} - -{{#block}} - {{#block param}} - hello - {{/block}} -{{/block}} - -{{#block param}} - {{#block param}} - hello - {{/block}} -{{/block}} - -{{#block}} - hello -{{/block}} - - - {{firstName}} - - - - {{firstName}} {{lastName}} - diff --git a/tests/glimmer/comment.hbs b/tests/glimmer/comment.hbs deleted file mode 100644 index 8b49144e9d1f..000000000000 --- a/tests/glimmer/comment.hbs +++ /dev/null @@ -1,11 +0,0 @@ -
- {{! Foo }} - {{#if @foo}} - Foo - {{/if}} - - {{! Bar }} - {{#if @bar}} - Bar - {{/if}} -
\ No newline at end of file diff --git a/tests/glimmer/component.hbs b/tests/glimmer/component.hbs deleted file mode 100644 index 23d4c7d18520..000000000000 --- a/tests/glimmer/component.hbs +++ /dev/null @@ -1,25 +0,0 @@ - -{{@greeting}}, {{@name}}! - -
- -
- -
- - hello - - - - - - - - - - - - -
Hello
diff --git a/tests/glimmer/concat-statement.hbs b/tests/glimmer/concat-statement.hbs deleted file mode 100644 index 86c9cda72976..000000000000 --- a/tests/glimmer/concat-statement.hbs +++ /dev/null @@ -1,20 +0,0 @@ -
- Hello -
- -
- Hello -
- - - -
-
-
-
-
-
-
-
-
-
\ No newline at end of file diff --git a/tests/glimmer/curleys.hbs b/tests/glimmer/curleys.hbs new file mode 100644 index 000000000000..fb9b81ecfb65 --- /dev/null +++ b/tests/glimmer/curleys.hbs @@ -0,0 +1 @@ +hi {{alex}}, {{ben}} and {{sophie}} \ No newline at end of file diff --git a/tests/glimmer/curly.hbs b/tests/glimmer/curly.hbs deleted file mode 100644 index edeee979f226..000000000000 --- a/tests/glimmer/curly.hbs +++ /dev/null @@ -1,2 +0,0 @@ -

Your username is @{{name}}

-

Hi {{firstName}} {{lastName}}

\ No newline at end of file diff --git a/tests/glimmer/element-modifier-statement.hbs b/tests/glimmer/element-modifier-statement.hbs deleted file mode 100644 index a3076fe47c5e..000000000000 --- a/tests/glimmer/element-modifier-statement.hbs +++ /dev/null @@ -1,15 +0,0 @@ -
- Hello -
- -
- Hello -
- -
- Hello -
- -
- Hello -
diff --git a/tests/glimmer/element-node.hbs b/tests/glimmer/element-node.hbs deleted file mode 100644 index 5564c99cc004..000000000000 --- a/tests/glimmer/element-node.hbs +++ /dev/null @@ -1,36 +0,0 @@ -
- Hello -
- -
- Hello -
- -
- hi -
- -
- A long enough string to trigger a line break that would prevent wrapping. -
- -
- A long enough string to trigger a line break that would prevent wrapping more. -
- -
- A long enough string to trigger a line break that would prevent wrapping more and more. -
- -
- {{#block}} - {{hello}} - {{/block}} -
- -
- {{hello}} -
- -
- diff --git a/tests/glimmer/else-if.hbs b/tests/glimmer/else-if.hbs deleted file mode 100644 index 94e1fdf809ca..000000000000 --- a/tests/glimmer/else-if.hbs +++ /dev/null @@ -1,84 +0,0 @@ -{{#if a}} - b -{{else if c}} - d -{{else}} - e -{{/if}} - -{{#if a}} - b -{{else if c}} - d -{{else}} - hello - {{#if f}} - g - {{/if}} - e -{{/if}} - -{{#if a}} - b -{{else if c}} - d -{{else if e}} - f -{{else if g}} - h -{{else}} - j -{{/if}} - -
- {{#if a}} - b - {{else if c}} - d - {{else}} - e - {{/if}} -
- -
-
- {{#if a}} - b - {{else if c}} - d - {{else}} - e - {{/if}} -
-
- -{{#if a}} - b -{{else}} - {{#each c as |d|}} - e - {{/each}} -{{/if}} - -{{#if a}} - {{#if b}} - ab - {{else if c}} - ac - {{/if}} -{{/if}} - -{{#if a}} - a -
b
- c -{{else}} - {{#if c}} - a - b -
c
- {{/if}} -
a
- b - c -{{/if}} diff --git a/tests/glimmer/jsfmt.spec.js b/tests/glimmer/jsfmt.spec.js index 4abf117d9346..4eb39c445007 100644 --- a/tests/glimmer/jsfmt.spec.js +++ b/tests/glimmer/jsfmt.spec.js @@ -1,2 +1,2 @@ run_spec(__dirname, ["glimmer"]); -run_spec(__dirname, ["glimmer"], { singleQuote: true }); +// run_spec(__dirname, ["glimmer"], { singleQuote: true }); diff --git a/tests/glimmer/literals.hbs b/tests/glimmer/literals.hbs deleted file mode 100644 index fbacde4628e8..000000000000 --- a/tests/glimmer/literals.hbs +++ /dev/null @@ -1,7 +0,0 @@ -{{mustache true}} -{{mustache 5}} -{{mustache undefined}} -{{mustache null}} - -{{! Mustache Comment}} -{{!-- Mustache Comment }} --}} diff --git a/tests/glimmer/loop.hbs b/tests/glimmer/loop.hbs deleted file mode 100644 index 608d12596c96..000000000000 --- a/tests/glimmer/loop.hbs +++ /dev/null @@ -1,5 +0,0 @@ -
    - {{#each speakers key="@index" as |speaker|}} -
  • {{speaker}}
  • - {{/each}} -
diff --git a/tests/glimmer/simple-elements.hbs b/tests/glimmer/simple-elements.hbs new file mode 100644 index 000000000000..d04ab3a4f799 --- /dev/null +++ b/tests/glimmer/simple-elements.hbs @@ -0,0 +1,11 @@ +

aaa

+ +

aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmmm nnnn oooo pppp qqqq rrrr ssss tttt

+ +
111

222

+ +

+ +

bar

+ +
\ No newline at end of file diff --git a/tests/glimmer/simple-text.hbs b/tests/glimmer/simple-text.hbs new file mode 100644 index 000000000000..4d15af871b2f --- /dev/null +++ b/tests/glimmer/simple-text.hbs @@ -0,0 +1,5 @@ +hello + +a b c + +1 2 3 \ No newline at end of file diff --git a/tests/glimmer/simple-wrapping-text.hbs b/tests/glimmer/simple-wrapping-text.hbs new file mode 100644 index 000000000000..21d29175b198 --- /dev/null +++ b/tests/glimmer/simple-wrapping-text.hbs @@ -0,0 +1 @@ +aaaaaa bbbbbbb ccccccc dddddd eeeeee ffffff gggggg hhhhh iiiiii jjjjj kkkkkk llllll mmmmm \ No newline at end of file diff --git a/tests/glimmer/string-literals.hbs b/tests/glimmer/string-literals.hbs deleted file mode 100644 index f06cedcaab92..000000000000 --- a/tests/glimmer/string-literals.hbs +++ /dev/null @@ -1,6 +0,0 @@ -{{"abc"}} -{{'abc'}} -{{" \" \" ' more double quote than single quote "}} -{{' \' \' " more single quote than double quote '}} -{{' " \' \" \\ '}} -{{" \" \' ' \\ "}} diff --git a/tests/glimmer/sub-expressions.hbs b/tests/glimmer/sub-expressions.hbs deleted file mode 100644 index 404444482ed2..000000000000 --- a/tests/glimmer/sub-expressions.hbs +++ /dev/null @@ -1,32 +0,0 @@ -
- -{{#block - (concat - (service) - (helper param hashPair=Value) - (largeNameHelper param param param param hashPair=value hashPair=value hashPair=Value) - hashPair=(helper param param param param param param hashPair=value hashPair=value hashPair=value) - hashPair=(does not need a line break due to being under 80 chars long) - ) -}} - -{{/block}} - -{{foobar-sub-component/foobar-foo - hook="stringLiteral" - foo= - (t - (concat "stringLiteral" (get blockParam "stringLiteral") hash=hash hash=hash) - foo=(simple-helper (hash hashKey=blockParam.foo assignParam=blockParam.bar)) - ) -}} diff --git a/yarn.lock b/yarn.lock index da38e3a3a6b7..13bdf0663ef9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -718,25 +718,25 @@ lodash "^4.17.11" to-fast-properties "^2.0.0" -"@glimmer/interfaces@^0.39.3": - version "0.39.3" - resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.39.3.tgz#1d46e1056c9ff3ce6174b82320893c027772e5f4" - integrity sha512-tmuZAUau8UbyGh4gLkpC6Vjdm0JP2dibAMMaU/yZG+SGSsQeT+bo+0XcEezscQDPihfXsBX4Z6yq98o15beYEA== - -"@glimmer/syntax@0.39.3": - version "0.39.3" - resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.39.3.tgz#a5220151b00c69fbd728e120dffc7f90fa5b4f24" - integrity sha512-Mb/d1hyWKZYANRPKoEGQ4wTc0kkcsjtxyN+J4ps2F1LQ5UKqJxDlgA/Tf9zXNHsd+A8dn25t5NIjQl7KIdsqOg== - dependencies: - "@glimmer/interfaces" "^0.39.3" - "@glimmer/util" "^0.39.3" +"@glimmer/interfaces@^0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.41.0.tgz#3f571a181025406f29faed9006d0a914afb577b1" + integrity sha512-d0Ryj8iV3FiyMyT4QpwHNg2QFFEmdzI5cJFcbmC+OmuTe6eOQ52mLDlw1+D+a3ZDv8Jfj3l0QkEcEugCxDY+1Q== + +"@glimmer/syntax@0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.41.0.tgz#af033e48475e29a4784900c13695925d752f462d" + integrity sha512-sYmgUMdK0jX+3ZNX9C2TKvL1YZGsKIcXRicwnzoTC7F56z29CbSCc7o6Zf0CI4L2Q7FSnHDxldlSe48wBAr6vQ== + dependencies: + "@glimmer/interfaces" "^0.41.0" + "@glimmer/util" "^0.41.0" handlebars "^4.0.13" simple-html-tokenizer "^0.5.7" -"@glimmer/util@^0.39.3": - version "0.39.3" - resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.39.3.tgz#f6b0417c4b0a30f4ea693990f466e3d1eb442d37" - integrity sha512-2tzpxdgaQxMu9bHFqTpGDBYDtSWJWQZkBCFfkzCmPrJuCis3YK7m9hzYIaow7CsVLnO44Xmur+Bpq6IM9gVFXw== +"@glimmer/util@^0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.41.0.tgz#743fa455d1d7fa0ce29688e932c231a99c0752cf" + integrity sha512-aKmQy62eRFhOZET9XmTB8MOA32G1FmD4d9HWL21OfdcGM4IbguRrWLMQc2DRh1YOE2AaT0PBrFrPmpNwFp5tpQ== "@iarna/toml@2.2.3": version "2.2.3"