From 7397e3613a39576b166556c2a0245ae558c2b6c4 Mon Sep 17 00:00:00 2001 From: Guillaume Grossetie Date: Sun, 19 Apr 2020 17:21:40 +0200 Subject: [PATCH] resolves #208 integrate with built-in template converter --- lib/converter.js | 6 ++++ package-lock.json | 36 +++++++++++++++++-- package.json | 5 +-- templates/paragraph.njk | 1 + .../fixtures/templates/nunjucks/paragraph.njk | 1 + test/templates_test.js | 5 +++ 6 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 templates/paragraph.njk create mode 100644 test/fixtures/templates/nunjucks/paragraph.njk diff --git a/lib/converter.js b/lib/converter.js index 196c399f..842bb97b 100644 --- a/lib/converter.js +++ b/lib/converter.js @@ -15,6 +15,12 @@ function registerTemplateConverter (processor, templates) { constructor () { this.baseConverter = processor.Html5Converter.create() this.templates = templates + this.backendTraits = { + basebackend: 'html5', + outfilesuffix: '.pdf', + htmlsyntax: 'html', + supports_templates: true + } } convert (node, transform, opts) { diff --git a/package-lock.json b/package-lock.json index 59ad70cb..c5dd583f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,9 @@ } }, "@asciidoctor/core": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.1.1.tgz", - "integrity": "sha512-yzV8GvrVUZst/lAlDvvEWY9Na9YhevE7PE3k1SvtQNyJEnpTWoKHrPG3soQ95nPM4oh2USMjpKDh4cEbvIRZpw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.2.0.tgz", + "integrity": "sha512-WN/mFuU4SeWaDqpGvRwAf+Tq2T8NQkVVpZ3Ne1/ZRxDKElzFkqq8bGbmxSMWmMVzC+H9ZO1YxxbOjhWEiNvpOA==", "dev": true, "requires": { "asciidoctor-opal-runtime": "0.3.0", @@ -158,6 +158,12 @@ "@types/node": "*" } }, + "a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "dev": true + }, "acorn": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", @@ -307,6 +313,12 @@ } } }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, "asciidoctor-opal-runtime": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.0.tgz", @@ -575,6 +587,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2158,6 +2176,18 @@ "boolbase": "~1.0.0" } }, + "nunjucks": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.1.tgz", + "integrity": "sha512-LYlVuC1ZNSalQQkLNNPvcgPt2M9FTY9bs39mTCuFXtqh7jWbYzhDlmz2M6onPiXEhdZo+b9anRhc+uBGuJZ2bQ==", + "dev": true, + "requires": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "chokidar": "^3.3.0", + "commander": "^3.0.2" + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", diff --git a/package.json b/package.json index 3b863202..5216457b 100644 --- a/package.json +++ b/package.json @@ -48,16 +48,17 @@ "yargs": "15.3.1" }, "devDependencies": { - "@asciidoctor/core": "^2.1.0", + "@asciidoctor/core": "^2.2.0", "chai": "4.2.0", "cheerio": "^1.0.0-rc.3", "dirty-chai": "2.0.1", "mocha": "7.1.2", + "nunjucks": "^3.2.1", "pixelmatch": "^5.1.0", "rimraf": "^3.0.0", "standard": "14.3.3" }, "peerDependencies": { - "@asciidoctor/core": "^2.1.0" + "@asciidoctor/core": "^2.2.0" } } diff --git a/templates/paragraph.njk b/templates/paragraph.njk new file mode 100644 index 00000000..1cddb8d9 --- /dev/null +++ b/templates/paragraph.njk @@ -0,0 +1 @@ +

{{ node.getContent() }}

diff --git a/test/fixtures/templates/nunjucks/paragraph.njk b/test/fixtures/templates/nunjucks/paragraph.njk new file mode 100644 index 00000000..7fef5c6e --- /dev/null +++ b/test/fixtures/templates/nunjucks/paragraph.njk @@ -0,0 +1 @@ +

{{ node.getContent() | safe }}

diff --git a/test/templates_test.js b/test/templates_test.js index f15e572f..1fb6fc1b 100644 --- a/test/templates_test.js +++ b/test/templates_test.js @@ -265,5 +265,10 @@ Just a preamble.`, { safe: 'safe' }) const $ = cheerio.load(doc.convert()) expect($('#toc > ul.sectlevel1 > li')).to.have.length(0) }) + + it('should use a template directory (Nunjucks)', () => { + const html = asciidoctor.convert('Hello *world*', { template_dirs: [`${__dirname}/fixtures/templates/nunjucks`] }) + expect(html).to.equal('

Hello world

') + }) }) })