diff --git a/README.md b/README.md index dabb609..2abfa51 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ marked: enable: false exclude: [] nofollow: false + disableNunjucks: false ``` - **gfm** - Enables [GitHub flavored markdown](https://help.github.com/articles/github-flavored-markdown) @@ -72,6 +73,7 @@ marked: - Example: `[foo](http://bar.com)` becomes `foo` * **nofollow** - Add `rel="noopener external nofollow noreferrer"` to all external links for security, privacy and SEO. [Read more](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types). _This can be enabled regardless of `external_link.enable`_ - Example: `[foo](http://bar.com)` becomes `foo` +- **disableNunjucks**: If true, Nunjucks tags `{{ }}` or `{% %}` (usually used by [tag plugins](https://hexo.io/docs/tag-plugins)) will not be rendered. ## Extras diff --git a/index.js b/index.js index 4a82c9b..1174044 100644 --- a/index.js +++ b/index.js @@ -24,6 +24,8 @@ hexo.config.marked = Object.assign({ } }, hexo.config.marked); +renderer.disableNunjucks = Boolean(hexo.config.marked.disableNunjucks); + hexo.extend.renderer.register('md', 'html', renderer, true); hexo.extend.renderer.register('markdown', 'html', renderer, true); hexo.extend.renderer.register('mkd', 'html', renderer, true); diff --git a/test/index.js b/test/index.js index 27a4090..0702540 100644 --- a/test/index.js +++ b/test/index.js @@ -812,4 +812,31 @@ describe('Marked renderer', () => { ].join('\n')); }); }); + + describe('nunjucks', () => { + const hexo = new Hexo(__dirname, { silent: true }); + const loremFn = () => { return 'ipsum'; }; + const engine = 'md'; + + before(async () => { + await hexo.init(); + hexo.extend.tag.register('lorem', loremFn); + hexo.extend.renderer.register('md', 'html', require('../lib/renderer')); + }); + + beforeEach(() => { hexo.config.marked = {}; }); + + it('default', async () => { + const result = await hexo.post.render(null, { content: '**foo** {% lorem %}', engine }); + result.content.should.eql('

foo ipsum

\n'); + }); + + it('enable disableNunjucks', async () => { + const renderer = hexo.render.renderer.get('md'); + renderer.disableNunjucks = true; + hexo.extend.renderer.register('md', 'html', renderer); + const result = await hexo.post.render(null, { content: '**foo** {% lorem %}', engine }); + result.content.should.eql('

foo {% lorem %}

\n'); + }); + }); });