Skip to content

Commit 6b5fad0

Browse files
author
Xuanwo
committed
Merge pull request #1652 from ksky521/master
解决code中存在类似swig语法被错误解析的问题
2 parents a8128cf + 2ba4e14 commit 6b5fad0

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

lib/extend/tag.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,30 @@ Tag.prototype.register = function(name, fn, options) {
4444
this.env.addExtension(name, tag);
4545
};
4646

47+
var placeholder = '\uFFFC';
48+
var rPlaceholder = /(?:<|&lt;)\!--\uFFFC(\d+)--(?:>|&gt;)/g;
49+
4750
Tag.prototype.render = function(str, options, callback) {
4851
if (!callback && typeof options === 'function') {
4952
callback = options;
5053
options = {};
5154
}
5255

56+
var cache = [];
57+
58+
function escapeContent(str) {
59+
return '<!--' + placeholder + (cache.push(str) - 1) + '-->';
60+
}
61+
5362
var env = this.env;
5463

5564
return new Promise(function(resolve, reject) {
65+
str = str.replace(/<pre><code.*>[\s\S]*?<\/code><\/pre>/gm, escapeContent);
5666
env.renderString(str, options, function(err, result) {
5767
if (err) return reject(err);
58-
resolve(result);
68+
resolve(result.replace(rPlaceholder, function() {
69+
return cache[arguments[1]];
70+
}));
5971
});
6072
});
6173
};

0 commit comments

Comments
 (0)