diff --git a/src/language-handlebars/printer-glimmer.js b/src/language-handlebars/printer-glimmer.js index d537aeb02..4091ff784 100644 --- a/src/language-handlebars/printer-glimmer.js +++ b/src/language-handlebars/printer-glimmer.js @@ -96,11 +96,16 @@ function print(path, options, print) { } case "BlockStatement": { const pp = path.getParentNode(1); - const isElseIf = pp && pp.inverse && pp.inverse.body[0] === n; + const isElseIf = + pp && + pp.inverse && + pp.inverse.body[0] === n && + pp.inverse.body[0].path.parts[0] === "if"; const hasElseIf = n.inverse && n.inverse.body[0] && - n.inverse.body[0].type === "BlockStatement"; + 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([ @@ -114,6 +119,11 @@ function print(path, options, print) { : "", isElseIf ? "" : concat([hardline, printCloseBlock(path, print)]) ]); + } else if (isElseIf) { + return concat([ + concat(["{{else ", printPathParams(path, print), "}}"]), + indent(concat([hardline, path.call(print, "program")])) + ]); } /** * I want this boolean to be: if params are going to cause a break, diff --git a/tests/html_glimmer/__snapshots__/jsfmt.spec.js.snap b/tests/html_glimmer/__snapshots__/jsfmt.spec.js.snap index 4df13d875..ac8fcd95f 100644 --- a/tests/html_glimmer/__snapshots__/jsfmt.spec.js.snap +++ b/tests/html_glimmer/__snapshots__/jsfmt.spec.js.snap @@ -321,7 +321,22 @@ exports[`else-if.hbs 1`] = ` {{/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}} b {{else if c}} @@ -371,6 +386,20 @@ exports[`else-if.hbs 1`] = ` {{/if}} +{{#if a}} + b +{{else}} + {{#each c as |d|}} + e + {{/each}} +{{/if}} +{{#if a}} + {{#if b}} + ab + {{else if c}} + ac + {{/if}} +{{/if}} `; exports[`literals.hbs 1`] = ` diff --git a/tests/html_glimmer/else-if.hbs b/tests/html_glimmer/else-if.hbs index 813d82ac0..102767295 100644 --- a/tests/html_glimmer/else-if.hbs +++ b/tests/html_glimmer/else-if.hbs @@ -51,3 +51,19 @@ {{/if}} + +{{#if a}} + b +{{else}} + {{#each c as |d|}} + e + {{/each}} +{{/if}} + +{{#if a}} + {{#if b}} + ab + {{else if c}} + ac + {{/if}} +{{/if}} \ No newline at end of file