From 18b192073d2565d270143fbbae5453ee1982e613 Mon Sep 17 00:00:00 2001 From: "bhavinpatel@ebay.com" Date: Fri, 28 Dec 2018 14:18:10 -0800 Subject: [PATCH 1/4] preserve single line break --- packages/prettyprint/src/printNodes.js | 12 ++++++++++++ .../test/autotest/js-block/expected.marko | 4 +++- .../prettyprint/test/autotest/js-line/expected.marko | 4 +++- .../prettyprint/test/autotest/js-line/template.marko | 2 ++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/prettyprint/src/printNodes.js b/packages/prettyprint/src/printNodes.js index 335f411e..b4e56cc6 100644 --- a/packages/prettyprint/src/printNodes.js +++ b/packages/prettyprint/src/printNodes.js @@ -140,6 +140,18 @@ module.exports = function printNodes(nodes, printContext, inputWriter) { printers.printNode(child, printContext, childWriter); var childOutput = childWriter.getOutput(); + if ( + prevChild && + child.type == "Text" && + /^(?:\n|\r){2,}$/.test(child.argument.value) && + !( + prevChild.type == "Text" && + /^(?:\n|\r){2,}$/.test(prevChild.argument.value) + ) + ) { + writer.write(printContext.eol); + } + if (childOutput.length) { if ( printContext.isHtmlSyntax && diff --git a/packages/prettyprint/test/autotest/js-block/expected.marko b/packages/prettyprint/test/autotest/js-block/expected.marko index 9fbadf20..f40b81e0 100644 --- a/packages/prettyprint/test/autotest/js-block/expected.marko +++ b/packages/prettyprint/test/autotest/js-block/expected.marko @@ -2,10 +2,12 @@ $ { var name = "Frank"; console.log(`Hello ${name}!`); } +
~~~~~~~ $ { var name = "Frank"; console.log(`Hello ${name}!`); } -div + +div \ No newline at end of file diff --git a/packages/prettyprint/test/autotest/js-line/expected.marko b/packages/prettyprint/test/autotest/js-line/expected.marko index 25ebc409..50577828 100644 --- a/packages/prettyprint/test/autotest/js-line/expected.marko +++ b/packages/prettyprint/test/autotest/js-line/expected.marko @@ -1,5 +1,7 @@ $ console.log("Hello World!"); +
~~~~~~~ $ console.log("Hello World!"); -div + +div \ No newline at end of file diff --git a/packages/prettyprint/test/autotest/js-line/template.marko b/packages/prettyprint/test/autotest/js-line/template.marko index 9b811b75..f85d8245 100644 --- a/packages/prettyprint/test/autotest/js-line/template.marko +++ b/packages/prettyprint/test/autotest/js-line/template.marko @@ -1,4 +1,6 @@ $ console.log('Hello World!'); + +
\ No newline at end of file From 7c83f25753bcd5f7f5fc5ba86cd25d0ed48c421f Mon Sep 17 00:00:00 2001 From: "bhavinpatel@ebay.com" Date: Fri, 28 Dec 2018 15:12:25 -0800 Subject: [PATCH 2/4] bugfix & added new test case --- packages/prettyprint/src/printNodes.js | 8 +--- .../test/autotest/js-line/template.marko | 2 - .../preserve-el-whitespace/expected.marko | 42 +++++++++++++++++++ .../preserve-el-whitespace/template.marko | 28 +++++++++++++ 4 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 packages/prettyprint/test/autotest/preserve-el-whitespace/expected.marko create mode 100644 packages/prettyprint/test/autotest/preserve-el-whitespace/template.marko diff --git a/packages/prettyprint/src/printNodes.js b/packages/prettyprint/src/printNodes.js index b4e56cc6..17ac74fe 100644 --- a/packages/prettyprint/src/printNodes.js +++ b/packages/prettyprint/src/printNodes.js @@ -142,12 +142,8 @@ module.exports = function printNodes(nodes, printContext, inputWriter) { var childOutput = childWriter.getOutput(); if ( prevChild && - child.type == "Text" && - /^(?:\n|\r){2,}$/.test(child.argument.value) && - !( - prevChild.type == "Text" && - /^(?:\n|\r){2,}$/.test(prevChild.argument.value) - ) + prevChild.type == "Text" && + /(?:\n|\r){2,}/.test(prevChild.argument.value) ) { writer.write(printContext.eol); } diff --git a/packages/prettyprint/test/autotest/js-line/template.marko b/packages/prettyprint/test/autotest/js-line/template.marko index f85d8245..9b811b75 100644 --- a/packages/prettyprint/test/autotest/js-line/template.marko +++ b/packages/prettyprint/test/autotest/js-line/template.marko @@ -1,6 +1,4 @@ $ console.log('Hello World!'); - -
\ No newline at end of file diff --git a/packages/prettyprint/test/autotest/preserve-el-whitespace/expected.marko b/packages/prettyprint/test/autotest/preserve-el-whitespace/expected.marko new file mode 100644 index 00000000..f18777aa --- /dev/null +++ b/packages/prettyprint/test/autotest/preserve-el-whitespace/expected.marko @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + World + + + +~~~~~~~ +a + +b + +c + + d + e + + f + +Hello + +g + +h + -- World + + j \ No newline at end of file diff --git a/packages/prettyprint/test/autotest/preserve-el-whitespace/template.marko b/packages/prettyprint/test/autotest/preserve-el-whitespace/template.marko new file mode 100644 index 00000000..06eafce7 --- /dev/null +++ b/packages/prettyprint/test/autotest/preserve-el-whitespace/template.marko @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + +Hello + + + + + + World + + + \ No newline at end of file From 86019e1b586304aac99e2fb0064ea0aa37dd494d Mon Sep 17 00:00:00 2001 From: "bhavinpatel@ebay.com" Date: Thu, 3 Jan 2019 11:15:08 -0800 Subject: [PATCH 3/4] bugfix to preserve line break --- packages/prettyprint/src/printNodes.js | 17 ++++++++++++++++- .../preserve-el-whitespace/expected.marko | 6 ++---- .../preserve-el-whitespace/template.marko | 2 +- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/packages/prettyprint/src/printNodes.js b/packages/prettyprint/src/printNodes.js index 17ac74fe..c12c2298 100644 --- a/packages/prettyprint/src/printNodes.js +++ b/packages/prettyprint/src/printNodes.js @@ -140,10 +140,25 @@ module.exports = function printNodes(nodes, printContext, inputWriter) { printers.printNode(child, printContext, childWriter); var childOutput = childWriter.getOutput(); + //Insert line break between tags if ( prevChild && prevChild.type == "Text" && - /(?:\n|\r){2,}/.test(prevChild.argument.value) + /(?:\n|\r){2,}/.test(prevChild.argument.value) && + (/[a-zA-Z0-9]/.test(prevChild.argument.value) || + prevChild.previousSibling || + child.parentNode === "TemplateRoot") + ) { + writer.write(printContext.eol); + } + + //Insert line break before text node + if ( + child.type == "Text" && + /(?:\n|\r){2,}/.test(child.argument.value) && + /[a-zA-Z0-9]/.test(child.argument.value) && + prevChild && + prevChild.previousSibling ) { writer.write(printContext.eol); } diff --git a/packages/prettyprint/test/autotest/preserve-el-whitespace/expected.marko b/packages/prettyprint/test/autotest/preserve-el-whitespace/expected.marko index f18777aa..0ca509f1 100644 --- a/packages/prettyprint/test/autotest/preserve-el-whitespace/expected.marko +++ b/packages/prettyprint/test/autotest/preserve-el-whitespace/expected.marko @@ -3,7 +3,6 @@ - @@ -11,7 +10,7 @@ - +-- Hello @@ -26,13 +25,12 @@ a b c - d e f -Hello +-- Hello g diff --git a/packages/prettyprint/test/autotest/preserve-el-whitespace/template.marko b/packages/prettyprint/test/autotest/preserve-el-whitespace/template.marko index 06eafce7..cd4b2eb5 100644 --- a/packages/prettyprint/test/autotest/preserve-el-whitespace/template.marko +++ b/packages/prettyprint/test/autotest/preserve-el-whitespace/template.marko @@ -16,7 +16,7 @@ -Hello +-- Hello From 0b024ae1ae590f6e8aebfdc9909321bc5d446368 Mon Sep 17 00:00:00 2001 From: "bhavinpatel@ebay.com" Date: Thu, 3 Jan 2019 11:31:11 -0800 Subject: [PATCH 4/4] fix new test case --- .../test/autotest/special-syntax-tags/expected.marko | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/prettyprint/test/autotest/special-syntax-tags/expected.marko b/packages/prettyprint/test/autotest/special-syntax-tags/expected.marko index 7002c01c..6215ba20 100644 --- a/packages/prettyprint/test/autotest/special-syntax-tags/expected.marko +++ b/packages/prettyprint/test/autotest/special-syntax-tags/expected.marko @@ -3,6 +3,7 @@ .ccccccc() .ddddddd() .eeeeeee())>${aaaaaaaaaaa} + ${i} + ${aaaaaaaaaaa} @@ -23,6 +25,7 @@ for(aaaaaaaaaaa in aaaaaaaaaa .ccccccc() .ddddddd() .eeeeeee()) -- ${aaaaaaaaaaa} + for( var i = 1; i === @@ -33,6 +36,7 @@ for( .eeeeeee(); i++ ) -- ${i} + // not currently formattable for(aaaaaaaaaaa in aaaaaaaaaa.bbbbbbbbb().ccccccc().ddddddd().eeeeeee() | status-var=loop) -- ${aaaaaaaaaaa} \ No newline at end of file