summaryrefslogtreecommitdiffstats
path: root/lib/handlebars/compiler/whitespace-control.js
diff options
context:
space:
mode:
authorkpdecker <kpdecker@gmail.com>2015-08-13 01:50:51 -0500
committerkpdecker <kpdecker@gmail.com>2015-08-13 01:51:17 -0500
commitea3a5a1eb6e488f8dc0189c68a6019c76ffad740 (patch)
treef86322b074f3145f40ab79d19936d7708b18b1b2 /lib/handlebars/compiler/whitespace-control.js
parent269dd492bb3ccb54516a3f7f6caba80dbaaad862 (diff)
downloadhandlebars.js-ea3a5a1eb6e488f8dc0189c68a6019c76ffad740.zip
handlebars.js-ea3a5a1eb6e488f8dc0189c68a6019c76ffad740.tar.gz
handlebars.js-ea3a5a1eb6e488f8dc0189c68a6019c76ffad740.tar.bz2
Add ignoreStandalone compiler option
Fixes #1072
Diffstat (limited to 'lib/handlebars/compiler/whitespace-control.js')
-rw-r--r--lib/handlebars/compiler/whitespace-control.js14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/handlebars/compiler/whitespace-control.js b/lib/handlebars/compiler/whitespace-control.js
index 5b76944..d1b743d 100644
--- a/lib/handlebars/compiler/whitespace-control.js
+++ b/lib/handlebars/compiler/whitespace-control.js
@@ -1,10 +1,13 @@
import Visitor from './visitor';
-function WhitespaceControl() {
+function WhitespaceControl(options = {}) {
+ this.options = options;
}
WhitespaceControl.prototype = new Visitor();
WhitespaceControl.prototype.Program = function(program) {
+ const doStandalone = !this.options.ignoreStandalone;
+
let isRoot = !this.isRootSeen;
this.isRootSeen = true;
@@ -31,7 +34,7 @@ WhitespaceControl.prototype.Program = function(program) {
omitLeft(body, i, true);
}
- if (inlineStandalone) {
+ if (doStandalone && inlineStandalone) {
omitRight(body, i);
if (omitLeft(body, i)) {
@@ -42,13 +45,13 @@ WhitespaceControl.prototype.Program = function(program) {
}
}
}
- if (openStandalone) {
+ if (doStandalone && openStandalone) {
omitRight((current.program || current.inverse).body);
// Strip out the previous content node if it's whitespace only
omitLeft(body, i);
}
- if (closeStandalone) {
+ if (doStandalone && closeStandalone) {
// Always strip the next node
omitRight(body, i);
@@ -106,7 +109,8 @@ WhitespaceControl.prototype.BlockStatement = function(block) {
}
// Find standalone else statments
- if (isPrevWhitespace(program.body)
+ if (!this.options.ignoreStandalone
+ && isPrevWhitespace(program.body)
&& isNextWhitespace(firstInverse.body)) {
omitLeft(program.body);
omitRight(firstInverse.body);