From e3d28ef1500ad16e512095f7171d3d3614725835 Mon Sep 17 00:00:00 2001 From: Rob McGuinness Date: Sun, 9 Jul 2017 19:57:31 -0400 Subject: [PATCH] closes #24: Compatibility with Gitbook 2.x.x --- index.js | 22 ++++++++++++++++++---- package.json | 2 +- test.js | 43 ++++++++++++++++++++----------------------- 3 files changed, 39 insertions(+), 28 deletions(-) diff --git a/index.js b/index.js index ce1ee5e..4ebd8fb 100644 --- a/index.js +++ b/index.js @@ -31,9 +31,24 @@ function requireSyntax(lang) { require('prismjs/components/prism-' + lang + '.js'); } +function getConfig(context, property, defaultValue) { + var config = context.config ? /* 3.x */ context.config : /* 2.x */ context.book.config; + return config.get(property, defaultValue); +} + +function isEbook(book) { + // 2.x + if (book.options && book.options.generator) { + return book.options.generator === 'ebook'; + } + + // 3.x + return book.output.name === 'ebook'; +} + function getAssets() { - var cssFiles = this.config.get('pluginsConfig.prism.css', []); + var cssFiles = getConfig(this, 'pluginsConfig.prism.css', []); var cssFolder = null; var cssNames = []; var cssName = null; @@ -70,7 +85,7 @@ module.exports = { code: function(block) { var highlighted = ''; - var userDefined = this.config.get('pluginsConfig.prism.lang', {}); + var userDefined = getConfig(this, 'pluginsConfig.prism.lang', {}); // Normalize language id var lang = block.kwargs.language || DEFAULT_LANGUAGE; @@ -117,8 +132,7 @@ module.exports = { var book = this; - if (book.output.name !== 'ebook') { - // Logic below does not apply to non-ebook formats + if (!isEbook(book)) { return; } diff --git a/package.json b/package.json index 199b2f1..bc61458 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "test": "npm run lint && tape test.js" }, "engines": { - "gitbook": ">=2.4.1" + "gitbook": ">=2.4.1 <4.0.0" }, "homepage": "https://github.com/gaearon/gitbook-plugin-prism", "repository": { diff --git a/test.js b/test.js index 3572bdb..2ee1715 100644 --- a/test.js +++ b/test.js @@ -1,44 +1,41 @@ var tester = require('gitbook-tester'); var test = require('tape'); -var pkg = require('./package.json'); - -test('highlight javascript code block', function (t) { - - t.plan(1); +function expect(t, version, content, expected) { tester.builder() - .withContent('```js\nfunction() { return true };\n```') + .withContent(content) .withLocalPlugin(__dirname) .withBookJson({ - gitbook: pkg.engines.gitbook, + gitbook: version, plugins: ['prism', '-highlight'] }) .create() .then(function(result) { - var expected = '
function() { return true };
'; - t.equal(result[0].content, expected); + t.equal(result[0].content, expected, 'gitbook version ' + version); }) .done(); +} + +test('highlight javascript code block', function (t) { + + t.plan(2); + + var content = '```js\nfunction() { return true };\n```'; + var expected = '
function() { return true };\n
'; + expect(t, '>=2.4.1', content, expected); + expect(t, '>=3.0.0', content, expected); + }); test('highlight csharp code using shortcut', function (t) { - t.plan(1); + t.plan(2); - tester.builder() - .withContent('```cs\nusing System; class Program {public static void Main(string[] args) {Console.WriteLine("Hello, world!"); } }\n```') - .withLocalPlugin(__dirname) - .withBookJson({ - gitbook: pkg.engines.gitbook, - plugins: ['prism', '-highlight'] - }) - .create() - .then(function(result) { - var expected = '
using System; class Program {public static void Main(string[] args) {Console.WriteLine("Hello, world!"); } }
'; - t.equal(result[0].content, expected); - }) - .done(); + var content = '```cs\nusing System; class Program {public static void Main(string[] args) {Console.WriteLine("Hello, world!"); } }\n```'; + var expected = '
using System; class Program {public static void Main(string[] args) {Console.WriteLine("Hello, world!"); } }\n
'; + expect(t, '>=2.4.1', content, expected); + expect(t, '>=3.0.0', content, expected); });