diff --git a/example/views/helpers/meta.njk b/example/views/helpers/meta.njk index 71a0549..c4fb67d 100644 --- a/example/views/helpers/meta.njk +++ b/example/views/helpers/meta.njk @@ -25,5 +25,6 @@ {% endif %} + {% endif %} {% endmacro %} \ No newline at end of file diff --git a/example/views/home.njk b/example/views/home.njk index afb1500..31847cc 100644 --- a/example/views/home.njk +++ b/example/views/home.njk @@ -2,7 +2,7 @@ {% block main %} - + {{ page.content | safe }} {% endblock %} \ No newline at end of file diff --git a/example/views/post.njk b/example/views/post.njk deleted file mode 100644 index e3728e2..0000000 --- a/example/views/post.njk +++ /dev/null @@ -1,5 +0,0 @@ -{% extends('layout.njk') %} - -{% block main %} -{{ page.content | safe }} -{% endblock %} \ No newline at end of file diff --git a/src/engines/nunjucks.js b/src/engines/nunjucks.js index fae2d25..4056bcc 100644 --- a/src/engines/nunjucks.js +++ b/src/engines/nunjucks.js @@ -1,6 +1,7 @@ const nunjucks = require('nunjucks') const { minify } = require('html-minifier') const fs = require('fs') +const assign = require('assign-deep') const configStore = require('./../config.js') const { asset, resize } = require('./helpers.js') @@ -17,10 +18,18 @@ const PageQuery = require('./../queries/pages.js') */ class Engine { + /** + * + * + * @param {string} views + * @param {object} site + * @param {object} options + * + */ constructor(views, site, options) { - // merge options - this._options = Object.assign({}, { + // merge data + this._options = assign({}, { autoescapes: true, throwOnUndefined: true, web: { @@ -29,6 +38,8 @@ class Engine { }, options) this.nunjucks = nunjucks.configure(views, this._options) + + // add filter: resize this.nunjucks.addFilter('resize', (...args) => { const done = args.pop() const options = args?.[2] ? {} : args[2] @@ -36,7 +47,7 @@ class Engine { resize(args[0], args[1], options, done) }, true) - // adding defaults for view, function and data = config.yml + // adding defaults for view, data from site.yml, functions and pageQuery this._defaults = { site: site, asset: asset, @@ -53,12 +64,15 @@ class Engine { * */ render(view, data, done) { - data = Object.assign({}, data, this._defaults) + + // merge data + data = assign({}, data, this._defaults) this.nunjucks.render(view, data, (error, response) => { const options = configStore.get('options') + // if options minifyHtml is set, minify html if (options.minifyHtml === true) { response = minify(response, { removeComments: true,