mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
Fixes #345 - Whitespace preservation should apply to all nested nodes
This commit is contained in:
parent
d433ac25aa
commit
7ff286d5d5
@ -189,9 +189,15 @@ class Generator {
|
||||
beforeAfterEvent = new GeneratorEvent(node, this);
|
||||
}
|
||||
|
||||
var isWhitespacePreserved = node.isPreserveWhitespace();
|
||||
|
||||
if (beforeAfterEvent) {
|
||||
beforeAfterEvent.isBefore = true;
|
||||
beforeAfterEvent.node.emit('beforeGenerateCode', beforeAfterEvent);
|
||||
|
||||
if (isWhitespacePreserved) {
|
||||
this.context.beginPreserveWhitespace();
|
||||
}
|
||||
}
|
||||
|
||||
if (node.getCodeGenerator) {
|
||||
@ -268,6 +274,10 @@ class Generator {
|
||||
if (beforeAfterEvent) {
|
||||
beforeAfterEvent.isBefore = false;
|
||||
beforeAfterEvent.node.emit('afterGenerateCode', beforeAfterEvent);
|
||||
|
||||
if (isWhitespacePreserved) {
|
||||
this.context.endPreserveWhitespace();
|
||||
}
|
||||
}
|
||||
|
||||
this._currentNode = oldCurrentNode;
|
||||
|
||||
@ -14,6 +14,8 @@ var macros = require('./util/macros');
|
||||
var extend = require('raptor-util/extend');
|
||||
var Walker = require('./Walker');
|
||||
|
||||
const FLAG_PRESERVE_WHITESPACE = 'PRESERVE_WHITESPACE';
|
||||
|
||||
const deresolveOptions = {
|
||||
shouldRemoveExt(ext) {
|
||||
return ext === '.js' || ext === '.json' || ext === '.es6';
|
||||
@ -392,8 +394,18 @@ class CompileContext {
|
||||
this._preserveWhitespace = preserveWhitespace;
|
||||
}
|
||||
|
||||
beginPreserveWhitespace() {
|
||||
this.pushFlag(FLAG_PRESERVE_WHITESPACE);
|
||||
}
|
||||
|
||||
endPreserveWhitespace() {
|
||||
this.popFlag(FLAG_PRESERVE_WHITESPACE);
|
||||
}
|
||||
|
||||
isPreserveWhitespace() {
|
||||
return this._preserveWhitespace === true;
|
||||
if (this.isFlagSet(FLAG_PRESERVE_WHITESPACE) || this._preserveWhitespace === true) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
setPreserveComments(preserveComments) {
|
||||
|
||||
@ -1 +1,3 @@
|
||||
<script><DIV>FOO</DIV></script>
|
||||
<script>
|
||||
<DIV>FOO</DIV>
|
||||
</script>
|
||||
3
test/autotests/render/whitespace-pre-code/expected.html
Normal file
3
test/autotests/render/whitespace-pre-code/expected.html
Normal file
@ -0,0 +1,3 @@
|
||||
<pre><code>// Hello World
|
||||
|
||||
console.log('Hello World!');</code></pre>
|
||||
3
test/autotests/render/whitespace-pre-code/template.marko
Normal file
3
test/autotests/render/whitespace-pre-code/template.marko
Normal file
@ -0,0 +1,3 @@
|
||||
<pre><code>// Hello World
|
||||
|
||||
console.log('Hello World!');</code></pre>
|
||||
3
test/autotests/render/whitespace-pre-code/test.js
Normal file
3
test/autotests/render/whitespace-pre-code/test.js
Normal file
@ -0,0 +1,3 @@
|
||||
exports.templateData = {
|
||||
"name": "World"
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user