From 49660946d820e7298b638e4a2fcc9e807eec232d Mon Sep 17 00:00:00 2001 From: Tim Ryan Date: Thu, 27 Jul 2017 01:11:03 -0400 Subject: [PATCH 1/3] When promisifying, store does not preserve disableNunjucks property This was causing difficulties in a less-maintained renderer I was using, but I think this may also count as a bug upstream. --- lib/extend/renderer.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/extend/renderer.js b/lib/extend/renderer.js index 470cba9686..fdcaec8aa5 100644 --- a/lib/extend/renderer.js +++ b/lib/extend/renderer.js @@ -46,13 +46,18 @@ Renderer.prototype.register = function(name, output, fn, sync) { name = getExtname(name); output = getExtname(output); + var disableNunjucks = fn.disableNunjucks; if (sync) { this.storeSync[name] = fn; this.storeSync[name].output = output; this.store[name] = Promise.method(fn); + this.store[name].disableNunjucks = disableNunjucks; } else { - if (fn.length > 2) fn = Promise.promisify(fn); + if (fn.length > 2) { + fn = Promise.promisify(fn); + fn.disableNunjucks = disableNunjucks; + } this.store[name] = fn; } From 266ecc9a74a5e2ff7524c27ca5161319ba6f5577 Mon Sep 17 00:00:00 2001 From: Tim Ryan Date: Thu, 27 Jul 2017 01:54:41 -0400 Subject: [PATCH 2/3] Changes disable nunjucks to only apply to Promise.method. --- lib/extend/renderer.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/extend/renderer.js b/lib/extend/renderer.js index fdcaec8aa5..3f8de3380b 100644 --- a/lib/extend/renderer.js +++ b/lib/extend/renderer.js @@ -46,18 +46,14 @@ Renderer.prototype.register = function(name, output, fn, sync) { name = getExtname(name); output = getExtname(output); - var disableNunjucks = fn.disableNunjucks; if (sync) { this.storeSync[name] = fn; this.storeSync[name].output = output; this.store[name] = Promise.method(fn); - this.store[name].disableNunjucks = disableNunjucks; + this.store[name].disableNunjucks = fn.disableNunjucks; } else { - if (fn.length > 2) { - fn = Promise.promisify(fn); - fn.disableNunjucks = disableNunjucks; - } + if (fn.length > 2) fn = Promise.promisify(fn); this.store[name] = fn; } From 29ab72063e4fdbd13374d2c6441f4893db8b4546 Mon Sep 17 00:00:00 2001 From: Mimi Date: Sun, 27 Nov 2022 21:26:47 +0800 Subject: [PATCH 3/3] Update post.js --- lib/hexo/post.js | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/lib/hexo/post.js b/lib/hexo/post.js index 7f0db61bbe..117669e5ff 100644 --- a/lib/hexo/post.js +++ b/lib/hexo/post.js @@ -377,17 +377,7 @@ class Post { } // disable Nunjucks when the renderer specify that. - let disableNunjucks = false; - let extRenderer = ext && ctx.render.renderer.get(ext); - if (extRenderer) { - disableNunjucks = Boolean(extRenderer.disableNunjucks); - if (!Object.prototype.hasOwnProperty.call(extRenderer, 'disableNunjucks')) { - extRenderer = ctx.render.renderer.get(ext, true); - if (extRenderer) { - disableNunjucks = Boolean(extRenderer.disableNunjucks); - } - } - } + let disableNunjucks = ext && ctx.render.renderer.get(ext) && !!ctx.render.renderer.get(ext).disableNunjucks; // front-matter overrides renderer's option if (typeof data.disableNunjucks === 'boolean') disableNunjucks = data.disableNunjucks;