diff --git a/core/modules/parsers/wikiparser/rules/fnprocdef.js b/core/modules/parsers/wikiparser/rules/fnprocdef.js index 34ac6d72d..940567eff 100644 --- a/core/modules/parsers/wikiparser/rules/fnprocdef.js +++ b/core/modules/parsers/wikiparser/rules/fnprocdef.js @@ -101,6 +101,9 @@ exports.parse = function() { } else if(this.match[1] === "widget") { parseTreeNodes[0].isWidgetDefinition = true; } + if(this.parser.configTrimWhiteSpace) { + parseTreeNodes[0].configTrimWhiteSpace = true; + } return parseTreeNodes; }; diff --git a/core/modules/parsers/wikiparser/wikiparser.js b/core/modules/parsers/wikiparser/wikiparser.js index 90a3e7446..1572fe702 100644 --- a/core/modules/parsers/wikiparser/wikiparser.js +++ b/core/modules/parsers/wikiparser/wikiparser.js @@ -32,6 +32,7 @@ options: see below: parseAsInline: true to parse text as inline instead of block wiki: reference to wiki to use _canonical_uri: optional URI of content if text is missing or empty + configTrimWhiteSpace: true to trim whitespace */ var WikiParser = function(type,text,options) { this.wiki = options.wiki; @@ -46,7 +47,7 @@ var WikiParser = function(type,text,options) { this.source = text || ""; this.sourceLength = this.source.length; // Flag for ignoring whitespace - this.configTrimWhiteSpace = false; + this.configTrimWhiteSpace = options.configTrimWhiteSpace !== undefined ? options.configTrimWhiteSpace : false; // Set current parse position this.pos = 0; // Start with empty output diff --git a/core/modules/widgets/importvariables.js b/core/modules/widgets/importvariables.js index 7cbe387b0..0c8ef5f29 100644 --- a/core/modules/widgets/importvariables.js +++ b/core/modules/widgets/importvariables.js @@ -58,7 +58,8 @@ ImportVariablesWidget.prototype.execute = function(tiddlerList) { isMacroDefinition: parseTreeNode.isMacroDefinition, isFunctionDefinition: parseTreeNode.isFunctionDefinition, isProcedureDefinition: parseTreeNode.isProcedureDefinition, - isWidgetDefinition: parseTreeNode.isWidgetDefinition + isWidgetDefinition: parseTreeNode.isWidgetDefinition, + configTrimWhiteSpace: parseTreeNode.configTrimWhiteSpace }; if (parseTreeNode.isMacroDefinition || parseTreeNode.isProcedureDefinition) { // Macro definitions can be folded into diff --git a/core/modules/widgets/setvariable.js b/core/modules/widgets/setvariable.js index f9e7b5a85..f8e98f390 100755 --- a/core/modules/widgets/setvariable.js +++ b/core/modules/widgets/setvariable.js @@ -53,9 +53,9 @@ SetWidget.prototype.execute = function() { } else if(this.parseTreeNode.isFunctionDefinition) { this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,undefined,{isFunctionDefinition: true}); } else if(this.parseTreeNode.isProcedureDefinition) { - this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,undefined,{isProcedureDefinition: true}); + this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,undefined,{isProcedureDefinition: true, configTrimWhiteSpace: this.parseTreeNode.configTrimWhiteSpace}); } else if(this.parseTreeNode.isWidgetDefinition) { - this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,undefined,{isWidgetDefinition: true}); + this.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,undefined,{isWidgetDefinition: true, configTrimWhiteSpace: this.parseTreeNode.configTrimWhiteSpace}); } else { this.setVariable(this.setName,this.getValue()); } diff --git a/core/modules/widgets/transclude.js b/core/modules/widgets/transclude.js index c113c1861..c4c4c0321 100755 --- a/core/modules/widgets/transclude.js +++ b/core/modules/widgets/transclude.js @@ -179,7 +179,7 @@ TranscludeWidget.prototype.getTransclusionTarget = function() { if(srcVariable.isCacheable && srcVariable[mode]) { parser = srcVariable[mode]; } else { - parser = this.wiki.parseText(this.transcludeType,variableInfo.text || "",{parseAsInline: parseAsInline}); + parser = this.wiki.parseText(this.transcludeType,variableInfo.text || "",{parseAsInline: parseAsInline, configTrimWhiteSpace: srcVariable.configTrimWhiteSpace}); if(srcVariable.isCacheable) { srcVariable[mode] = parser; } diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index 18b395ec0..627c3490c 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -104,7 +104,8 @@ Widget.prototype.setVariable = function(name,value,params,isMacroDefinition,opti isMacroDefinition: !!isMacroDefinition, isFunctionDefinition: !!options.isFunctionDefinition, isProcedureDefinition: !!options.isProcedureDefinition, - isWidgetDefinition: !!options.isWidgetDefinition + isWidgetDefinition: !!options.isWidgetDefinition, + configTrimWhiteSpace: !!options.configTrimWhiteSpace }; }; diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 87d78344e..49c81930e 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -988,7 +988,8 @@ exports.parseText = function(type,text,options) { return new Parser(type,text,{ parseAsInline: options.parseAsInline, wiki: this, - _canonical_uri: options._canonical_uri + _canonical_uri: options._canonical_uri, + configTrimWhiteSpace: options.configTrimWhiteSpace }); };