summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-06-29 13:42:12 +0200
committerSamy Pessé <samypesse@gmail.com>2016-12-22 15:00:59 +0100
commitba25a60e913466cee035a63752380baba32229a6 (patch)
tree74404023d2b60e12d4287e527dce0f653c35ca24
parentc619a1a742fa73544c3dbe897f5cb544c270dea9 (diff)
downloadgitbook-ba25a60e913466cee035a63752380baba32229a6.zip
gitbook-ba25a60e913466cee035a63752380baba32229a6.tar.gz
gitbook-ba25a60e913466cee035a63752380baba32229a6.tar.bz2
Start switching to markup-it
-rw-r--r--packages/gitbook-markdown/lib/page.js75
-rw-r--r--packages/gitbook-markdown/lib/toHTML.js64
-rw-r--r--packages/gitbook-markdown/lib/toMarkdown.js6
-rw-r--r--packages/gitbook-markdown/package.json71
-rw-r--r--packages/gitbook-markdown/test/page.js4
5 files changed, 92 insertions, 128 deletions
diff --git a/packages/gitbook-markdown/lib/page.js b/packages/gitbook-markdown/lib/page.js
index 5ea7c21..12848ed 100644
--- a/packages/gitbook-markdown/lib/page.js
+++ b/packages/gitbook-markdown/lib/page.js
@@ -1,73 +1,56 @@
var _ = require('lodash');
-var kramed = require('kramed');
-var annotate = require('kramed/lib/annotate/');
+var MarkupIt = require('markup-it');
+var gitbookSyntax = require('markup-it/syntaxes/gitbook');
var RAW_START = '{% raw %}';
-var RAW_END = '{% endraw %}';
+var RAW_END = '{% endraw %}';
+var gitbook = new MarkupIt(gitbookSyntax);
/**
- Escape a code block's content using raw blocks
-
- @param {String}
- @return {String}
-*/
+ * Escape a code block's content using raw blocks
+ *
+ * @param {String}
+ * @return {String}
+ */
function escape(str) {
return RAW_START + str + RAW_END;
}
-/**
- Combines annotated nodes
-
- @param {Array}
- @return {String}
-*/
-function combine(nodes) {
- return _.map(nodes, 'raw').join('');
-}
/**
- Add templating "raw" to code blocks to
- avoid nunjucks processing their content.
-
- @param {String} src
- @return {String}
-*/
+ * Add templating "raw" to code blocks to
+ * avoid nunjucks processing their content.
+ *
+ * @param {String} src
+ * @return {String}
+ */
function preparePage(src) {
- var lexed = annotate.blocks(src);
var levelRaw = 0;
- function escapeCodeElement(el) {
- if (el.type == 'code' && levelRaw == 0) {
- el.raw = escape(el.raw);
- } else if (el.type == 'tplexpr') {
- var expr = el.matches[0];
- if(expr === 'raw') {
+ return gitbook.annotate(src, function(token) {
+ var tokenType = token.getType();
+
+ if (tokenType === MarkupIt.BLOCKS.TEMPLATE && tokenType === MarkupIt.STYLES.TEMPLATE) {
+ var expr = token.getData().get('type');
+ if (expr === 'raw') {
levelRaw = levelRaw + 1;
- } else if(expr === 'endraw') {
+ } else if (expr == 'endraw') {
levelRaw = 0;
}
+
+ return true;
}
- return el;
- }
- var escaped = _.map(lexed, function(el) {
- // Only escape paragraphs and headings
- if(el.type == 'paragraph' || el.type == 'heading') {
- var line = annotate.inline(el.raw);
+ if (token.isBlock() && )
- // Escape inline code blocks
- line = line.map(escapeCodeElement);
- // Change raw source code
- el.raw = combine(line);
- return el;
- } else {
- return escapeCodeElement(el);
+ if (tokenType !== MarkupIt.BLOCKS.CODE && tokenType !== MarkupIt.STYLES.CODE && levelRaw == 0) {
+ return;
}
- });
- return combine(escaped);
+ return escape(token.getRaw());
+ });
}
module.exports = {
diff --git a/packages/gitbook-markdown/lib/toHTML.js b/packages/gitbook-markdown/lib/toHTML.js
index c40c545..9140624 100644
--- a/packages/gitbook-markdown/lib/toHTML.js
+++ b/packages/gitbook-markdown/lib/toHTML.js
@@ -1,54 +1,34 @@
-var _ = require('lodash');
-var kramed = require('kramed');
+var MarkupIt = require('markup-it');
+var markdownSyntax = require('markup-it/syntaxes/markdown');
+var htmlSyntax = require('markup-it/syntaxes/html');
-/**
- Get renderer for kramed with correct configuration
-
- @return {kramed.Renderer}
-*/
-function getRenderer() {
- return new kramed.Renderer({
- langPrefix: 'lang-',
- smartypants: false,
- headerPrefix: '',
- headerAutoId: false,
- xhtml: false
- });
-}
-
-/**
- Get options for markdown parsing
-
- @return {Object}
-*/
-function getOption() {
- return _.extend({}, kramed.defaults, {
- mathjax: false
- });
-}
+var markdown = new MarkupIt(markdownSyntax);
+var html = new MarkupIt(htmlSyntax);
/**
- Convert Markdown block to HTML
-
- @param {String} src (markdown)
- @return {String} (html)
-*/
+ * Convert Markdown block to HTML
+ *
+ * @param {String} src (markdown)
+ * @return {String} (html)
+ */
function convertMdToHTMLBlock(src) {
- var options = _.extend(getOption(), {
- renderer: getRenderer()
- });
+ var content = markdown.toContent(src);
+ var textHtml = html.toText(content);
- return kramed(src, options);
+ return textHtml;
}
/**
- Convert Markdown inline to HTML
-
- @param {String} src (markdown)
- @return {String} (html)
-*/
+ * Convert Markdown inline to HTML
+ *
+ * @param {String} src (markdown)
+ * @return {String} (html)
+ */
function convertMdToHTMLInline(src) {
- return kramed.inlineLexer(src, getOption(), getRenderer());
+ var content = markdown.toInlineContent(src);
+ var textHtml = html.toInlineText(content);
+
+ return textHtml;
}
module.exports = {
diff --git a/packages/gitbook-markdown/lib/toMarkdown.js b/packages/gitbook-markdown/lib/toMarkdown.js
index aab642c..2dd0581 100644
--- a/packages/gitbook-markdown/lib/toMarkdown.js
+++ b/packages/gitbook-markdown/lib/toMarkdown.js
@@ -5,9 +5,9 @@ function ns(s, n) {
}
/*
- This module provides markup rules for gitbook-html
- These rules are being used to generate SUMMARY/GLOSSARY/LANGS
-*/
+ * This module provides markup rules for gitbook-html
+ * These rules are being used to generate SUMMARY/GLOSSARY/LANGS
+ */
module.exports = {
onTitleStart: function(level) {
return ns('#', level) + ' ';
diff --git a/packages/gitbook-markdown/package.json b/packages/gitbook-markdown/package.json
index 0e69e22..8ea2b0b 100644
--- a/packages/gitbook-markdown/package.json
+++ b/packages/gitbook-markdown/package.json
@@ -1,38 +1,39 @@
{
- "name": "gitbook-markdown",
- "version": "1.3.2",
- "homepage": "https://www.gitbook.com",
- "description": "Parse markdown content for gitbook",
- "main": "lib/index.js",
- "dependencies": {
- "lodash": "^4.13.1",
- "kramed": "0.5.6",
- "kramed-text-renderer": "0.2.1",
- "gitbook-html": "1.3.3"
+ "name": "gitbook-markdown",
+ "version": "1.3.2",
+ "homepage": "https://www.gitbook.com",
+ "description": "Parse markdown content for gitbook",
+ "main": "lib/index.js",
+ "dependencies": {
+ "gitbook-html": "1.3.3",
+ "kramed": "0.5.6",
+ "kramed-text-renderer": "0.2.1",
+ "lodash": "^4.13.1",
+ "markup-it": "^2.0.1"
+ },
+ "devDependencies": {
+ "mocha": "^2.5.3"
+ },
+ "scripts": {
+ "test": "export TESTING=true; mocha --reporter list --bail"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/GitbookIO/gitbook-markdown.git"
+ },
+ "author": "FriendCode 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"
},
- "devDependencies": {
- "mocha": "^2.5.3"
- },
- "scripts": {
- "test": "export TESTING=true; mocha --reporter list --bail"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/GitbookIO/gitbook-markdown.git"
- },
- "author": "FriendCode 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"
- }
- ]
+ {
+ "name": "Samy Pessé",
+ "email": "samy@gitbook.com"
+ }
+ ]
}
diff --git a/packages/gitbook-markdown/test/page.js b/packages/gitbook-markdown/test/page.js
index 8b882d8..fac5ec4 100644
--- a/packages/gitbook-markdown/test/page.js
+++ b/packages/gitbook-markdown/test/page.js
@@ -18,8 +18,8 @@ describe('Page parsing', function() {
});
it('should not add id to headings', function() {
- assert.equal(page('# Hello').content, '<h1>Hello</h1>\n');
- assert.equal(page('# Hello {#test}').content, '<h1 id="test">Hello </h1>\n');
+ assert.equal(page('# Hello').content, '<h1>Hello</h1>');
+ assert.equal(page('# Hello {#test}').content, '<h1 id="test">Hello</h1>');
});
it('should escape codeblocks in preparation (1)', function() {