Skip to content

Commit

Permalink
Ignore linebreak when meet handlebar (#1104)
Browse files Browse the repository at this point in the history
Add test
  • Loading branch information
mmsqe authored and bitwiseman committed Jan 13, 2017
1 parent 11dcf3c commit b692621
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 1 deletion.
2 changes: 1 addition & 1 deletion js/lib/beautify-html.js
Expand Up @@ -301,7 +301,7 @@
return content.length ? content.join('') : ['', 'TK_EOF'];
}

if (this.traverse_whitespace()) {
if (handlebarsStarted < 2 && this.traverse_whitespace()) {
this.space_or_wrap(content);
continue;
}
Expand Down
66 changes: 66 additions & 0 deletions js/test/generated/beautify-html-tests.js
Expand Up @@ -502,6 +502,7 @@ function run_html_tests(test_obj, Urlencoded, js_beautify, html_beautify, css_be
test_fragment('<div class=\'{{#if thingIs "value"}}{{field}}{{/if}}\'></div>');
test_fragment('<div class=\'{{#if thingIs \'value\'}}{{field}}{{/if}}\'></div>');
test_fragment('<span>{{condition < 0 ? "result1" : "result2"}}</span>');
test_fragment('<span>{{condition1 && condition2 && condition3 && condition4 < 0 ? "resForTrue" : "resForFalse"}}</span>');

// Handlebars Indenting On - (content = "{{! comment}}")
reset_options();
Expand Down Expand Up @@ -559,6 +560,7 @@ function run_html_tests(test_obj, Urlencoded, js_beautify, html_beautify, css_be
test_fragment('<div class=\'{{#if thingIs "value"}}{{! comment}}{{/if}}\'></div>');
test_fragment('<div class=\'{{#if thingIs \'value\'}}{{! comment}}{{/if}}\'></div>');
test_fragment('<span>{{condition < 0 ? "result1" : "result2"}}</span>');
test_fragment('<span>{{condition1 && condition2 && condition3 && condition4 < 0 ? "resForTrue" : "resForFalse"}}</span>');

// Handlebars Indenting On - (content = "{{!-- comment--}}")
reset_options();
Expand Down Expand Up @@ -616,6 +618,7 @@ function run_html_tests(test_obj, Urlencoded, js_beautify, html_beautify, css_be
test_fragment('<div class=\'{{#if thingIs "value"}}{{!-- comment--}}{{/if}}\'></div>');
test_fragment('<div class=\'{{#if thingIs \'value\'}}{{!-- comment--}}{{/if}}\'></div>');
test_fragment('<span>{{condition < 0 ? "result1" : "result2"}}</span>');
test_fragment('<span>{{condition1 && condition2 && condition3 && condition4 < 0 ? "resForTrue" : "resForFalse"}}</span>');

// Handlebars Indenting On - (content = "{pre{{field1}} {{field2}} {{field3}}post")
reset_options();
Expand Down Expand Up @@ -673,6 +676,7 @@ function run_html_tests(test_obj, Urlencoded, js_beautify, html_beautify, css_be
test_fragment('<div class=\'{{#if thingIs "value"}}{pre{{field1}} {{field2}} {{field3}}post{{/if}}\'></div>');
test_fragment('<div class=\'{{#if thingIs \'value\'}}{pre{{field1}} {{field2}} {{field3}}post{{/if}}\'></div>');
test_fragment('<span>{{condition < 0 ? "result1" : "result2"}}</span>');
test_fragment('<span>{{condition1 && condition2 && condition3 && condition4 < 0 ? "resForTrue" : "resForFalse"}}</span>');

// Handlebars Indenting On - (content = "{{! \n mult-line\ncomment \n with spacing\n}}")
reset_options();
Expand Down Expand Up @@ -730,6 +734,7 @@ function run_html_tests(test_obj, Urlencoded, js_beautify, html_beautify, css_be
test_fragment('<div class=\'{{#if thingIs "value"}}{{! \n mult-line\ncomment \n with spacing\n}}{{/if}}\'></div>');
test_fragment('<div class=\'{{#if thingIs \'value\'}}{{! \n mult-line\ncomment \n with spacing\n}}{{/if}}\'></div>');
test_fragment('<span>{{condition < 0 ? "result1" : "result2"}}</span>');
test_fragment('<span>{{condition1 && condition2 && condition3 && condition4 < 0 ? "resForTrue" : "resForFalse"}}</span>');

// Handlebars Indenting On - (content = "{{!-- \n mult-line\ncomment \n with spacing\n--}}")
reset_options();
Expand Down Expand Up @@ -787,6 +792,7 @@ function run_html_tests(test_obj, Urlencoded, js_beautify, html_beautify, css_be
test_fragment('<div class=\'{{#if thingIs "value"}}{{!-- \n mult-line\ncomment \n with spacing\n--}}{{/if}}\'></div>');
test_fragment('<div class=\'{{#if thingIs \'value\'}}{{!-- \n mult-line\ncomment \n with spacing\n--}}{{/if}}\'></div>');
test_fragment('<span>{{condition < 0 ? "result1" : "result2"}}</span>');
test_fragment('<span>{{condition1 && condition2 && condition3 && condition4 < 0 ? "resForTrue" : "resForFalse"}}</span>');

// Handlebars Indenting On - (content = "{{!-- \n mult-line\ncomment \n{{#> component}}\n mult-line\ncomment \n with spacing\n {{/ component}}--}}")
reset_options();
Expand Down Expand Up @@ -844,6 +850,66 @@ function run_html_tests(test_obj, Urlencoded, js_beautify, html_beautify, css_be
test_fragment('<div class=\'{{#if thingIs "value"}}{{!-- \n mult-line\ncomment \n{{#> component}}\n mult-line\ncomment \n with spacing\n {{/ component}}--}}{{/if}}\'></div>');
test_fragment('<div class=\'{{#if thingIs \'value\'}}{{!-- \n mult-line\ncomment \n{{#> component}}\n mult-line\ncomment \n with spacing\n {{/ component}}--}}{{/if}}\'></div>');
test_fragment('<span>{{condition < 0 ? "result1" : "result2"}}</span>');
test_fragment('<span>{{condition1 && condition2 && condition3 && condition4 < 0 ? "resForTrue" : "resForFalse"}}</span>');

// Handlebars Indenting On - (content = "content")
reset_options();
opts.indent_handlebars = true;
opts.wrap_line_length = 80;
test_fragment('{{page-title}}');
test_fragment('{{#if 0}}{{/if}}');
test_fragment('{{#if 0}}content{{/if}}');
test_fragment('{{#if 0}}\n{{/if}}');
test_fragment(
'{{#if words}}{{/if}}',
'{{#if words}}{{/if}}');
test_fragment(
'{{#if words}}content{{/if}}',
'{{#if words}}content{{/if}}');
test_fragment(
'{{#if words}}content{{/if}}',
'{{#if words}}content{{/if}}');
test_fragment('{{#if 1}}\n <div>\n </div>\n{{/if}}');
test_fragment(
'{{#if 1}}\n<div>\n</div>\n{{/if}}',
'{{#if 1}}\n <div>\n </div>\n{{/if}}');
test_fragment('<div>\n {{#if 1}}\n {{/if}}\n</div>');
test_fragment(
'<div>\n{{#if 1}}\n{{/if}}\n</div>',
'<div>\n {{#if 1}}\n {{/if}}\n</div>');
test_fragment(
'{{#if}}\n{{#each}}\n{{#if}}\ncontent\n{{/if}}\n{{#if}}\ncontent\n{{/if}}\n{{/each}}\n{{/if}}',
'{{#if}}\n {{#each}}\n {{#if}}\n content\n {{/if}}\n {{#if}}\n content\n {{/if}}\n {{/each}}\n{{/if}}');
test_fragment('{{#if 1}}\n <div>\n </div>\n{{/if}}');
test_fragment(
'{{#if 1}}\n content\n {{else}}\n content\n{{/if}}',
'{{#if 1}}\n content\n{{else}}\n content\n{{/if}}');
test_fragment(
'{{#if 1}}\n {{else}}\n {{/if}}',
'{{#if 1}}\n{{else}}\n{{/if}}');
test_fragment(
'{{#if thing}}\n{{#if otherthing}}\n content\n {{else}}\ncontent\n {{/if}}\n {{else}}\ncontent\n{{/if}}',
'{{#if thing}}\n {{#if otherthing}}\n content\n {{else}}\n content\n {{/if}}\n{{else}}\n content\n{{/if}}');
test_fragment(
'<div{{somestyle}}></div>',
'<div {{somestyle}}></div>');
test_fragment(
'<div{{#if test}}class="foo"{{/if}}>content</div>',
'<div {{#if test}} class="foo" {{/if}}>content</div>');
test_fragment(
'<div{{#if thing}}{{somestyle}}class="{{class}}"{{else}}class="{{class2}}"{{/if}}>content</div>',
'<div {{#if thing}} {{somestyle}} class="{{class}}" {{else}} class="{{class2}}" {{/if}}>content</div>');
test_fragment(
'<span{{#if condition}}class="foo"{{/if}}>content</span>',
'<span {{#if condition}} class="foo" {{/if}}>content</span>');
test_fragment('<div unformatted="{{#if}}content{{/if}}">content</div>');
test_fragment('<div unformatted="{{#if }} content{{/if}}">content</div>');
test_fragment('<div class="{{#if thingIs "value"}}content{{/if}}"></div>');
test_fragment('<div class="{{#if thingIs \'value\'}}content{{/if}}"></div>');
test_fragment('<div class=\'{{#if thingIs "value"}}content{{/if}}\'></div>');
test_fragment('<div class=\'{{#if thingIs \'value\'}}content{{/if}}\'></div>');
test_fragment('<span>{{condition < 0 ? "result1" : "result2"}}</span>');
test_fragment('<span>{{condition1 && condition2 && condition3 && condition4 < 0 ? "resForTrue" : "resForFalse"}}</span>');


//============================================================
Expand Down
9 changes: 9 additions & 0 deletions test/data/html/tests.js
Expand Up @@ -506,6 +506,12 @@ exports.test_data = {
{ name: "indent_handlebars", value: "true" }
],
content: '{{!-- \\n mult-line\\ncomment \\n{{#> component}}\\n mult-line\\ncomment \\n with spacing\\n {{/ component}}--}}'
}, {
options: [
{ name: "indent_handlebars", value: "true" },
{ name: "wrap_line_length", value: "80" }
],
content: 'content'
}],
tests: [
{ fragment: true, unchanged: '{{page-title}}' },
Expand Down Expand Up @@ -670,6 +676,9 @@ exports.test_data = {
}, {
fragment: true,
unchanged: '<span>{{condition < 0 ? "result1" : "result2"}}</span>'
}, {
fragment: true,
unchanged: '<span>{{condition1 && condition2 && condition3 && condition4 < 0 ? "resForTrue" : "resForFalse"}}</span>'
}
],
}, {
Expand Down

0 comments on commit b692621

Please sign in to comment.