diff options
Diffstat (limited to 'packages/gitbook-markdown/lib')
-rw-r--r-- | packages/gitbook-markdown/lib/page.js | 75 | ||||
-rw-r--r-- | packages/gitbook-markdown/lib/toHTML.js | 64 | ||||
-rw-r--r-- | packages/gitbook-markdown/lib/toMarkdown.js | 6 |
3 files changed, 54 insertions, 91 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) + ' '; |