Skip to content

Commit c6b2691

Browse files
committed
feat: support 'disableNunjucks' in front-matter
1 parent e30605d commit c6b2691

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

lib/hexo/post.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,9 @@ class Post {
259259
}
260260
}
261261

262+
// front-matter overrides renderer's option
263+
if (typeof data.disableNunjucks === 'boolean') disableNunjucks = data.disableNunjucks;
264+
262265
const cacheObj = new PostRenderCache();
263266

264267
return promise.then(content => {

test/scripts/hexo/post.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -749,6 +749,55 @@ describe('Post', () => {
749749
data.content.should.not.eql(content.toUpperCase());
750750
});
751751

752+
it('render() - (disableNunjucks === true) - front-matter', async () => {
753+
const renderer = hexo.render.renderer.get('markdown');
754+
renderer.disableNunjucks = true;
755+
756+
try {
757+
const data = await post.render(null, {
758+
content: fixture.content,
759+
engine: 'markdown',
760+
disableNunjucks: false
761+
});
762+
data.content.trim().should.eql(fixture.expected);
763+
} finally {
764+
renderer.disableNunjucks = false;
765+
}
766+
});
767+
768+
it('render() - (disableNunjucks === false) - front-matter', async () => {
769+
const renderer = hexo.render.renderer.get('markdown');
770+
renderer.disableNunjucks = false;
771+
772+
try {
773+
const data = await post.render(null, {
774+
content: fixture.content,
775+
engine: 'markdown',
776+
disableNunjucks: true
777+
});
778+
data.content.trim().should.eql(fixture.expected_disable_nunjucks);
779+
} finally {
780+
renderer.disableNunjucks = false;
781+
}
782+
});
783+
784+
// Only boolean type of front-matter's disableNunjucks is valid
785+
it('render() - (disableNunjucks === null) - front-matter', async () => {
786+
const renderer = hexo.render.renderer.get('markdown');
787+
renderer.disableNunjucks = true;
788+
789+
try {
790+
const data = await post.render(null, {
791+
content: fixture.content,
792+
engine: 'markdown',
793+
disableNunjucks: null
794+
});
795+
data.content.trim().should.eql(fixture.expected_disable_nunjucks);
796+
} finally {
797+
renderer.disableNunjucks = false;
798+
}
799+
});
800+
752801
// #2321
753802
it('render() - allow backtick code block in "blockquote" tag plugin', async () => {
754803
const code = 'alert("Hello world")';

0 commit comments

Comments
 (0)