diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-12-22 15:51:59 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-12-22 15:51:59 +0100 |
commit | c4e512477e3cbe1344caaa2f1cc56e4bb402ad79 (patch) | |
tree | ca43a054bf84a49b48c942b754153b5459eed3ee | |
parent | 6e0fd5d5d44fc2c97e075c4bbff188a0a7e797c1 (diff) | |
download | gitbook-c4e512477e3cbe1344caaa2f1cc56e4bb402ad79.zip gitbook-c4e512477e3cbe1344caaa2f1cc56e4bb402ad79.tar.gz gitbook-c4e512477e3cbe1344caaa2f1cc56e4bb402ad79.tar.bz2 |
Import gitbook-markdown
19 files changed, 234 insertions, 275 deletions
diff --git a/packages/gitbook-html/package.json b/packages/gitbook-html/package.json index 2346220..e0a4214 100644 --- a/packages/gitbook-html/package.json +++ b/packages/gitbook-html/package.json @@ -15,7 +15,7 @@ "type": "git", "url": "https://github.com/GitbookIO/gitbook-html.git" }, - "author": "FriendCode Inc. <contact@gitbook.com>", + "author": "GitBook Inc. <contact@gitbook.com>", "license": "Apache-2.0", "bugs": { "url": "https://github.com/GitbookIO/gitbook-html/issues" diff --git a/packages/gitbook-markdown/.gitignore b/packages/gitbook-markdown/.gitignore deleted file mode 100644 index 9550e4f..0000000 --- a/packages/gitbook-markdown/.gitignore +++ /dev/null @@ -1,28 +0,0 @@ -# Logs -logs -*.log - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directory -# Deployed apps should consider commenting this line out: -# see https://npmjs.org/doc/faq.html#Should-I-check-my-node_modules-folder-into-git -node_modules - -# vim swapfile -*.swp diff --git a/packages/gitbook-markdown/.npmignore b/packages/gitbook-markdown/.npmignore new file mode 100644 index 0000000..85de9cf --- /dev/null +++ b/packages/gitbook-markdown/.npmignore @@ -0,0 +1 @@ +src diff --git a/packages/gitbook-markdown/.travis.yml b/packages/gitbook-markdown/.travis.yml deleted file mode 100644 index 3e5e701..0000000 --- a/packages/gitbook-markdown/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "stable" - - "0.12" diff --git a/packages/gitbook-markdown/lib/index.js b/packages/gitbook-markdown/lib/index.js deleted file mode 100644 index d65ebf7..0000000 --- a/packages/gitbook-markdown/lib/index.js +++ /dev/null @@ -1,10 +0,0 @@ -var HTMLParser = require('gitbook-html'); - -var toHTML = require('./toHTML'); -var toMarkdown = require('./toMarkdown'); -var page = require('./page'); - -module.exports = HTMLParser.createParser(toHTML, toMarkdown); - -// Add the custom page escaping -module.exports.page.prepare = page.prepare; diff --git a/packages/gitbook-markdown/lib/toHTML.js b/packages/gitbook-markdown/lib/toHTML.js deleted file mode 100644 index 9140624..0000000 --- a/packages/gitbook-markdown/lib/toHTML.js +++ /dev/null @@ -1,37 +0,0 @@ -var MarkupIt = require('markup-it'); -var markdownSyntax = require('markup-it/syntaxes/markdown'); -var htmlSyntax = require('markup-it/syntaxes/html'); - -var markdown = new MarkupIt(markdownSyntax); -var html = new MarkupIt(htmlSyntax); - -/** - * Convert Markdown block to HTML - * - * @param {String} src (markdown) - * @return {String} (html) - */ -function convertMdToHTMLBlock(src) { - var content = markdown.toContent(src); - var textHtml = html.toText(content); - - return textHtml; -} - -/** - * Convert Markdown inline to HTML - * - * @param {String} src (markdown) - * @return {String} (html) - */ -function convertMdToHTMLInline(src) { - var content = markdown.toInlineContent(src); - var textHtml = html.toInlineText(content); - - return textHtml; -} - -module.exports = { - block: convertMdToHTMLBlock, - inline: convertMdToHTMLInline -}; diff --git a/packages/gitbook-markdown/package.json b/packages/gitbook-markdown/package.json index 4cf465c..7eb48f8 100644 --- a/packages/gitbook-markdown/package.json +++ b/packages/gitbook-markdown/package.json @@ -1,38 +1,24 @@ { "name": "gitbook-markdown", - "version": "2.0.1", + "version": "4.0.0", "homepage": "https://www.gitbook.com", - "description": "Parse markdown content for gitbook", + "description": "Markdown parser interface for GitBook", "main": "lib/index.js", "dependencies": { - "gitbook-html": "1.3.3", - "lodash": "^4.13.1", + "gitbook-html": "4.0.0", "markdown-escape": "^1.0.1", - "markup-it": "^2.2.0 >=2.2.0" - }, - "devDependencies": { - "mocha": "^2.5.3" + "markup-it": "3.2.0" }, "scripts": { - "test": "export TESTING=true; mocha --reporter list --bail" + "test": "mocha --reporter list --bail" }, "repository": { "type": "git", - "url": "https://github.com/GitbookIO/gitbook-markdown.git" + "url": "https://github.com/GitbookIO/gitbook.git" }, - "author": "FriendCode Inc. <contact@gitbook.com>", + "author": "GitBook Inc. <contact@gitbook.com>", "license": "Apache-2.0", "bugs": { - "url": "https://github.com/GitbookIO/gitbook-markdown/issues" - }, - "contributors": [ - { - "name": "Aaron O'Mullan", - "email": "aaron@gitbook.com" - }, - { - "name": "Samy Pessé", - "email": "samy@gitbook.com" - } - ] + "url": "https://github.com/GitbookIO/gitbook/issues" + } } diff --git a/packages/gitbook-markdown/src/index.js b/packages/gitbook-markdown/src/index.js new file mode 100644 index 0000000..694d8c8 --- /dev/null +++ b/packages/gitbook-markdown/src/index.js @@ -0,0 +1,10 @@ +const HTMLParser = require('gitbook-html'); + +const toHTML = require('./toHTML'); +const toMarkdown = require('./toMarkdown'); +const page = require('./page'); + +module.exports = HTMLParser.createParser(toHTML, toMarkdown); + +// Add the custom page escaping +module.exports.page.prepare = page.prepare; diff --git a/packages/gitbook-markdown/lib/page.js b/packages/gitbook-markdown/src/page.js index 2cf0941..70da324 100644 --- a/packages/gitbook-markdown/lib/page.js +++ b/packages/gitbook-markdown/src/page.js @@ -1,10 +1,8 @@ -var _ = require('lodash'); -var MarkupIt = require('markup-it'); -var gitbookSyntax = require('markup-it/syntaxes/markdown'); +const { State } = require('markup-it'); +const markdown = require('markup-it/lib/markdown'); -var RAW_START = '{% raw %}'; -var RAW_END = '{% endraw %}'; -var markdown = new MarkupIt(gitbookSyntax); +const RAW_START = '{% raw %}'; +const RAW_END = '{% endraw %}'; /** * Escape a code block's content using raw blocks @@ -25,19 +23,28 @@ function escape(str) { * @return {String} */ function preparePage(src) { - var levelRaw = 0; - var content = markdown.toContent(src, { + let levelRaw = 0; + + const fromMD = State.create(markdown); + const document = fromMD.deserializeToDocument(src); + + document = document.mapDescendants((node) => { + + }); + + + const content = markdown.toContent(src, { math: true, template: true }); - var textMarkdown = markdown.toText(content, { - annotate: function(state, raw, token) { - var tokenType = token.getType(); + const textMarkdown = markdown.toText(content, { + annotate(state, raw, token) { + const tokenType = token.getType(); if (tokenType === MarkupIt.ENTITIES.TEMPLATE) { - var type = token.getData().get('type'); - var expr = token.getAsPlainText(); + const type = token.getData().get('type'); + const expr = token.getAsPlainText(); if (type === 'expr') { if (expr === 'raw') { diff --git a/packages/gitbook-markdown/src/toHTML.js b/packages/gitbook-markdown/src/toHTML.js new file mode 100644 index 0000000..e887e11 --- /dev/null +++ b/packages/gitbook-markdown/src/toHTML.js @@ -0,0 +1,35 @@ +const { State } = require('markup-it'); +const markdown = require('markup-it/lib/markdown'); +const html = require('markup-it/lib/html'); + +/** + * Convert Markdown block to HTML + * + * @param {String} src (markdown) + * @return {String} (html) + */ +function convertMdToHTMLBlock(src) { + const fromMD = State.create(markdown); + const document = fromMD.deserializeToDocument(src); + + const toHTML = State.create(html); + return toHTML.serializeDocument(document); +} + +/** + * Convert Markdown inline to HTML + * + * @param {String} src (markdown) + * @return {String} (html) + */ +function convertMdToHTMLInline(src) { + const content = markdown.toInlineContent(src); + const textHtml = html.toInlineText(content); + + return textHtml; +} + +module.exports = { + block: convertMdToHTMLBlock, + inline: convertMdToHTMLInline +}; diff --git a/packages/gitbook-markdown/lib/toMarkdown.js b/packages/gitbook-markdown/src/toMarkdown.js index 71de016..5b8deee 100644 --- a/packages/gitbook-markdown/lib/toMarkdown.js +++ b/packages/gitbook-markdown/src/toMarkdown.js @@ -1,4 +1,4 @@ -var escape = require('markdown-escape'); +const escape = require('markdown-escape'); // Return N time a string function ns(s, n) { @@ -10,46 +10,46 @@ function ns(s, n) { * These rules are being used to generate SUMMARY/GLOSSARY/LANGS */ module.exports = { - onText: function(text) { + onText(text) { return escape(text); }, - onTitleStart: function(level) { + onTitleStart(level) { return ns('#', level) + ' '; }, - onTitleEnd: function(level) { + onTitleEnd(level) { return this.onBL(); }, - onParagraphStart: function() { + onParagraphStart() { return this.onSection(); }, - onParagraphEnd: function() { + onParagraphEnd() { return this.onSection(); }, - onLinkStart: function() { + onLinkStart() { return '['; }, - onLinkEnd: function(href) { - return '](' + href +')'; + onLinkEnd(href) { + return '](' + href + ')'; }, - onListStart: function(level) { + onListStart(level) { return ''; }, - onListEnd: function() { + onListEnd() { return ''; }, - onListItemStart: function(level) { + onListItemStart(level) { return ns(' ', level * 4) + '* '; }, - onListItemEnd: function() { + onListItemEnd() { return ''; }, - onHR: function() { + onHR() { return '-----'; } }; diff --git a/packages/gitbook-markdown/test/glossary.js b/packages/gitbook-markdown/test/glossary.js index 588859a..b38a78d 100644 --- a/packages/gitbook-markdown/test/glossary.js +++ b/packages/gitbook-markdown/test/glossary.js @@ -1,29 +1,28 @@ -var fs = require('fs'); -var path = require('path'); -var assert = require('assert'); +const fs = require('fs'); +const path = require('path'); +const expect = require('assert'); -var glossary = require('../').glossary; +const glossary = require('../src').glossary; -describe('Glossary parsing', function () { - var LEXED; +describe('Glossary', () => { + let LEXED; - before(function() { - var CONTENT = fs.readFileSync(path.join(__dirname, './fixtures/GLOSSARY.md'), 'utf8'); + before(() => { + const CONTENT = fs.readFileSync(path.join(__dirname, './fixtures/GLOSSARY.md'), 'utf8'); LEXED = glossary(CONTENT); }); - it('should only get heading + paragraph pairs', function() { - assert.equal(LEXED.length, 4); + it('should only get heading + paragraph pairs', () => { + expect(LEXED.length).toBe(4); }); - it('should output simple name/description objects', function() { - assert.equal(true, !(LEXED.some(function(e) { - return !Boolean(e.name && e.description); - }))); + it('should output simple name/description objects', () => { + expect(!(LEXED.some(e => !Boolean(e.name && e.description)))).toBe(true); }); - it('should correctly convert it to text', function() { - var text = glossary.toText(LEXED); - assertObjectsEqual(glossary(text), LEXED); + it('should correctly convert it to text', () => { + const text = glossary.toText(LEXED); + const parsed = glossary(text); + expect(parsed).toEqual(LEXED); }); }); diff --git a/packages/gitbook-markdown/test/helper.js b/packages/gitbook-markdown/test/helper.js deleted file mode 100644 index 1e310f7..0000000 --- a/packages/gitbook-markdown/test/helper.js +++ /dev/null @@ -1,6 +0,0 @@ -var assert = require("assert"); - -global.assertObjectsEqual = function(o1, o2) { - assert.equal(JSON.stringify(o1, null, 4), JSON.stringify(o2, null, 4)); -}; - diff --git a/packages/gitbook-markdown/test/inline.js b/packages/gitbook-markdown/test/inline.js index 4ed1006..834fd3f 100644 --- a/packages/gitbook-markdown/test/inline.js +++ b/packages/gitbook-markdown/test/inline.js @@ -1,11 +1,9 @@ -var fs = require('fs'); -var path = require('path'); -var assert = require('assert'); +const expect = require('expect'); +const inline = require('../src').inline; -var inline = require('../').inline; - -describe('Inline', function () { - it('should render inline markdown', function() { - assert.equal(inline('Hello **World**').content, 'Hello <strong>World</strong>'); +describe('Inline', () => { + it('should render inline markdown', () => { + const parsed = inline('Hello **World**'); + expect(parsed.content).toBe('Hello <strong>World</strong>'); }); }); diff --git a/packages/gitbook-markdown/test/langs.js b/packages/gitbook-markdown/test/langs.js index 3c2f108..3986de9 100644 --- a/packages/gitbook-markdown/test/langs.js +++ b/packages/gitbook-markdown/test/langs.js @@ -1,28 +1,28 @@ -var fs = require('fs'); -var path = require('path'); -var assert = require('assert'); +const fs = require('fs'); +const path = require('path'); +const expect = require('expect'); +const langs = require('../src').langs; -var langs = require('../').langs; +describe('Languages', () => { + let LEXED; -describe('Languages parsing', function () { - var LEXED; - - before(function() { - var CONTENT = fs.readFileSync(path.join(__dirname, './fixtures/LANGS.md'), 'utf8'); + before(() => { + const CONTENT = fs.readFileSync(path.join(__dirname, './fixtures/LANGS.md'), 'utf8'); LEXED = langs(CONTENT); }); - it('should detect paths and titles', function() { - assert.equal(LEXED.length, 2); - assert.equal(LEXED[0].ref,'en/'); - assert.equal(LEXED[0].title,'English'); + it('should detect paths and titles', () => { + expect(LEXED.length).toEqual(2); + expect(LEXED[0].ref).toEqual('en/'); + expect(LEXED[0].title).toEqual('English'); - assert.equal(LEXED[1].ref,'fr/'); - assert.equal(LEXED[1].title,'French'); + expect(LEXED[1].ref).toEqual('fr/'); + expect(LEXED[1].title).toEqual('French'); }); - it('should correctly convert it to text', function() { - var text = langs.toText(LEXED); - assertObjectsEqual(langs(text), LEXED); + it('should correctly convert it to text', () => { + const text = langs.toText(LEXED); + const parsed = langs(text); + expect(parsed).toEqual(LEXED); }); }); diff --git a/packages/gitbook-markdown/test/page.js b/packages/gitbook-markdown/test/page.js index a2e21d1..9ea48f4 100644 --- a/packages/gitbook-markdown/test/page.js +++ b/packages/gitbook-markdown/test/page.js @@ -1,74 +1,81 @@ -var fs = require('fs'); -var path = require('path'); -var assert = require('assert'); +const fs = require('fs'); +const path = require('path'); +const expect = require('expect'); -var page = require('../').page; +const page = require('../src').page; -describe('Page parsing', function() { - var LEXED; +describe('Page', () => { + let LEXED; - before(function() { - var CONTENT = fs.readFileSync(path.join(__dirname, './fixtures/PAGE.md'), 'utf8'); + before(() => { + const CONTENT = fs.readFileSync(path.join(__dirname, './fixtures/PAGE.md'), 'utf8'); LEXED = page(CONTENT); }); - it('should gen content', function() { - assert(LEXED.content); + it('should gen content', () => { + expect(LEXED.content).toExist(); }); - it('should not add id to headings', function() { - assert.equal(page('# Hello').content, '<h1>Hello</h1>'); - assert.equal(page('# Hello {#test}').content, '<h1 id="test">Hello</h1>'); + it('should not add id to headings', () => { + expect(page('# Hello').content).toBe('<h1>Hello</h1>'); + expect(page('# Hello {#test}').content).toBe('<h1 id="test">Hello</h1>'); }); - it('should escape codeblocks in preparation (1)', function() { - assert.equal(page.prepare("Hello `world`"), 'Hello {% raw %}`world`{% endraw %}\n\n'); - assert.equal(page.prepare("Hello `world test`"), 'Hello {% raw %}`world test`{% endraw %}\n\n'); - assert.equal(page.prepare("Hello ```world test```"), 'Hello {% raw %}`world test`{% endraw %}\n\n'); - assert.equal(page.prepare("Hello\n```js\nworld test\n```\n"), 'Hello\n\n{% raw %}```js\nworld test\n```\n\n{% endraw %}'); - assert.equal(page.prepare("Hello\n```\ntest\n\tworld\n\ttest\n```"), 'Hello\n\n{% raw %}```\ntest\n world\n test\n```\n\n{% endraw %}'); + it('should escape codeblocks in preparation (1)', () => { + expect(page.prepare('Hello `world`')).toBe('Hello {% raw %}`world`{% endraw %}\n\n'); + expect(page.prepare('Hello `world test`')).toBe('Hello {% raw %}`world test`{% endraw %}\n\n'); + expect(page.prepare('Hello ```world test```')).toBe('Hello {% raw %}`world test`{% endraw %}\n\n'); + expect(page.prepare('Hello\n```js\nworld test\n```\n')).toBe('Hello\n\n{% raw %}```js\nworld test\n```\n\n{% endraw %}'); + expect(page.prepare('Hello\n```\ntest\n\tworld\n\ttest\n```')).toBe('Hello\n\n{% raw %}```\ntest\n world\n test\n```\n\n{% endraw %}'); }); - it('should escape codeblocks in preparation (2)', function() { - assert.equal( - page.prepare("Hello\n\n\n\tworld\n\thello\n\n\ntest"), + it('should escape codeblocks in preparation (2)', () => { + expect( + page.prepare('Hello\n\n\n\tworld\n\thello\n\n\ntest') + ).toBe( 'Hello\n\n{% raw %}```\nworld\nhello```\n\n{% endraw %}test\n\n' ); - assert.equal( - page.prepare("Hello\n\n\n\tworld\n\thello\n\n\n"), + expect( + page.prepare('Hello\n\n\n\tworld\n\thello\n\n\n') + ).toBe( 'Hello\n\n{% raw %}```\nworld\nhello```\n\n{% endraw %}' ); }); - it('should escape codeblocks with nunjucks tags', function() { - assert.equal( - page.prepare('Hello {{ "Bonjour" }} ```test```'), + it('should escape codeblocks with nunjucks tags', () => { + expect( + page.prepare('Hello {{ "Bonjour" }} ```test```') + ).toBe( 'Hello {{ "Bonjour" }} {% raw %}`test`{% endraw %}\n\n' ); }); - it('should escape codeblocks with nunjucks tags in {% raw %} tags', function() { - assert.equal( - page.prepare('{% raw %}Hello {{ "Bonjour" }} ```test```{% endraw %}'), + it('should escape codeblocks with nunjucks tags in {% raw %} tags', () => { + expect( + page.prepare('{% raw %}Hello {{ "Bonjour" }} ```test```{% endraw %}') + ).toBe( '{% raw %}Hello {{ "Bonjour" }} `test`{% endraw %}\n\n' ); - assert.equal( - page.prepare('{% raw %}Hello {{ "Bonjour" }} {% raw %}{% endraw %}```test```'), + expect( + page.prepare('{% raw %}Hello {{ "Bonjour" }} {% raw %}{% endraw %}```test```') + ).toBe( '{% raw %}Hello {{ "Bonjour" }} {% raw %}{% endraw %}{% raw %}`test`{% endraw %}\n\n' ); - assert.equal( - page.prepare('```{% raw %}Hello {{ "Bonjour" }} {% raw %}```'), + expect( + page.prepare('```{% raw %}Hello {{ "Bonjour" }} {% raw %}```') + ).toBe( '{% raw %}`{% raw %}Hello {{ "Bonjour" }} {% raw %}`{% endraw %}\n\n' ); - assert.equal( - page.prepare('```\ntest\n```\n\n\n### Test'), + expect( + page.prepare('```\ntest\n```\n\n\n### Test') + ).toBe( '{% raw %}```\ntest\n```\n\n{% endraw %}### Test\n\n' ); }); - it('should not process math', function() { - assert.equal(page.prepare("Hello $world$"), 'Hello $world$\n\n'); - assert.equal(page.prepare("Hello $$world$$"), 'Hello $$world$$\n\n'); + it('should not process math', () => { + expect(page.prepare('Hello $world$')).toBe('Hello $world$\n\n'); + expect(page.prepare('Hello $$world$$')).toBe('Hello $$world$$\n\n'); }); }); diff --git a/packages/gitbook-markdown/test/readme.js b/packages/gitbook-markdown/test/readme.js index dd059fb..fad9c53 100644 --- a/packages/gitbook-markdown/test/readme.js +++ b/packages/gitbook-markdown/test/readme.js @@ -1,30 +1,30 @@ -var fs = require('fs'); -var path = require('path'); -var assert = require('assert'); +const fs = require('fs'); +const path = require('path'); +const expect = require('expect'); -var readme = require('../').readme; +const readme = require('../src').readme; -describe('Readme parsing', function () { - var LEXED; +describe('Readme', () => { + let LEXED; - before(function() { - var CONTENT = fs.readFileSync(path.join(__dirname, './fixtures/README.md'), 'utf8'); + before(() => { + const CONTENT = fs.readFileSync(path.join(__dirname, './fixtures/README.md'), 'utf8'); LEXED = readme(CONTENT); }); - it('should contain a title', function() { - assert(LEXED.title); + it('should contain a title', () => { + expect(LEXED.title).toExist(); }); - it('should contain a description', function() { - assert(LEXED.description); + it('should contain a description', () => { + expect(LEXED.description).toExist(); }); - it('should extract the right title', function() { - assert.equal(LEXED.title, "This is the title"); + it('should extract the right title', () => { + expect(LEXED.title).toBe('This is the title'); }); - it('should extract the right description', function() { - assert.equal(LEXED.description, "This is the book description."); + it('should extract the right description', () => { + expect(LEXED.description).toBe('This is the book description.'); }); }); diff --git a/packages/gitbook-markdown/test/summary.js b/packages/gitbook-markdown/test/summary.js index 31dbff9..9748500 100644 --- a/packages/gitbook-markdown/test/summary.js +++ b/packages/gitbook-markdown/test/summary.js @@ -1,8 +1,8 @@ -var fs = require('fs'); -var path = require('path'); -var assert = require('assert'); +const fs = require('fs'); +const path = require('path'); +const expect = require('expect'); -var summary = require('../').summary; +const summary = require('../src').summary; function lex(fixtureFile) { return summary( @@ -13,61 +13,62 @@ function lex(fixtureFile) { ); } -describe('Summary parsing', function () { - var LEXED; +describe('Summary', () => { + let LEXED, PART; - before(function() { + before(() => { LEXED = lex('SUMMARY.md'); PART = LEXED.parts[0]; }); - it('should detect chapters', function() { - assert.equal(PART.articles.length, 5); + it('should detect chapters', () => { + expect(PART.articles.length).toBe(5); }); - it('should support articles', function() { - assert.equal(PART.articles[0].articles.length, 2); - assert.equal(PART.articles[1].articles.length, 0); - assert.equal(PART.articles[2].articles.length, 0); + it('should support articles', () => { + expect(PART.articles[0].articles.length).toBe(2); + expect(PART.articles[1].articles.length).toBe(0); + expect(PART.articles[2].articles.length).toBe(0); }); - it('should detect paths and titles', function() { - assert(PART.articles[0].ref); - assert(PART.articles[1].ref); - assert(PART.articles[2].ref); - assert(PART.articles[3].ref); - assert.equal(PART.articles[4].ref, null); + it('should detect paths and titles', () => { + expect(PART.articles[0].ref).toExist(); + expect(PART.articles[1].ref).toExist(); + expect(PART.articles[2].ref).toExist(); + expect(PART.articles[3].ref).toExist(); + expect(PART.articles[4].ref).toNotExist(); - assert(PART.articles[0].title); - assert(PART.articles[1].title); - assert(PART.articles[2].title); - assert(PART.articles[3].title); - assert(PART.articles[4].title); + expect(PART.articles[0].title).toExist(); + expect(PART.articles[1].title).toExist(); + expect(PART.articles[2].title).toExist(); + expect(PART.articles[3].title).toExist(); + expect(PART.articles[4].title).toExist(); }); - it('should normalize paths from .md', function() { - assert.equal(PART.articles[0].ref, 'chapter-1/README.md'); - assert.equal(PART.articles[1].ref, 'chapter-2/README.md'); - assert.equal(PART.articles[2].ref, 'chapter-3/README.md'); + it('should normalize paths from .md', () => { + expect(PART.articles[0].ref).toBe('chapter-1/README.md'); + expect(PART.articles[1].ref).toBe('chapter-2/README.md'); + expect(PART.articles[2].ref).toBe('chapter-3/README.md'); }); - it('should part parts', function() { - var l = lex('SUMMARY_PARTS.md'); - assert.equal(l.parts.length, 3); + it('should part parts', () => { + const l = lex('SUMMARY_PARTS.md'); + expect(l.parts.length).toBe(3); }); - it('should allow lists separated by whitespace', function() { - var l = lex('SUMMARY_WHITESPACE.md'); - assert.equal(l.parts[0].articles.length, 5); + it('should allow lists separated by whitespace', () => { + const l = lex('SUMMARY_WHITESPACE.md'); + expect(l.parts[0].articles.length).toBe(5); }); - it('should allow ignore empty entries', function() { - var l = lex('SUMMARY_EMPTY.md'); - assert.equal(l.parts[0].articles.length, 1); + it('should allow ignore empty entries', () => { + const l = lex('SUMMARY_EMPTY.md'); + expect(l.parts[0].articles.length).toBe(1); }); - it('should correctly convert it to text', function() { - var text = summary.toText(LEXED); - assertObjectsEqual(summary(text), LEXED); + it('should correctly convert it to text', () => { + const text = summary.toText(LEXED); + const parsed = summary(text); + expect(parsed).toEqual(LEXED); }); }); diff --git a/packages/gitbook/package.json b/packages/gitbook/package.json index 2266013..07ed9aa 100644 --- a/packages/gitbook/package.json +++ b/packages/gitbook/package.json @@ -23,7 +23,7 @@ "front-matter": "^2.1.0", "gitbook-asciidoc": "4.0.0", "gitbook-core": "4.0.0", - "gitbook-markdown": "1.3.2", + "gitbook-markdown": "4.0.0", "gitbook-plugin-copy-code": "4.0.0", "gitbook-plugin-headings": "4.0.0", "gitbook-plugin-highlight": "4.0.0", |