summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-markdown/lib
diff options
context:
space:
mode:
Diffstat (limited to 'packages/gitbook-markdown/lib')
-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
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) + ' ';