From 2dc2fbe162f8a24543caeace106550177f5df0c4 Mon Sep 17 00:00:00 2001
From: Cheng-Han, Wu
Date: Mon, 22 Feb 2016 08:58:06 +0800
Subject: Change markdown engine from remarkable to markdown-it
---
public/js/extra.js | 80 ++++++++++-----------
public/js/syncscroll.js | 188 ++++++++++++++++++------------------------------
2 files changed, 108 insertions(+), 160 deletions(-)
(limited to 'public/js')
diff --git a/public/js/extra.js b/public/js/extra.js
index 37af0692..90b9a70c 100644
--- a/public/js/extra.js
+++ b/public/js/extra.js
@@ -662,7 +662,7 @@ emojify.setConfig({
ignore_emoticons: true
});
-var md = new Remarkable('full', {
+var md = window.markdownit('default', {
html: true,
breaks: true,
langPrefix: "",
@@ -670,57 +670,57 @@ var md = new Remarkable('full', {
typographer: true,
highlight: highlightRender
});
-md.renderer.rules.image = function (tokens, idx, options /*, env */ ) {
- var src = ' src="' + Remarkable.utils.escapeHtml(tokens[idx].src) + '"';
- var title = tokens[idx].title ? (' title="' + Remarkable.utils.escapeHtml(Remarkable.utils.replaceEntities(tokens[idx].title)) + '"') : '';
- var alt = ' alt="' + (tokens[idx].alt ? Remarkable.utils.escapeHtml(Remarkable.utils.replaceEntities(tokens[idx].alt)) : '') + '"';
- var suffix = options.xhtmlOut ? ' /' : '';
- return '';
-}
-md.renderer.rules.list_item_open = function ( /* tokens, idx, options, env */ ) {
- return '
\n'; +md.renderer.rules.blockquote_open = function (tokens, idx, options, env, self) { + tokens[idx].attrJoin('class', 'raw'); + return self.renderToken.apply(self, arguments); }; -md.renderer.rules.heading_open = function (tokens, idx) { - return ''; +md.renderer.rules.heading_open = function (tokens, idx, options, env, self) { + tokens[idx].attrJoin('class', 'raw'); + return self.renderToken.apply(self, arguments); }; md.renderer.rules.fence = function (tokens, idx, options, env, self) { - var token = tokens[idx]; - var langClass = ''; - var langPrefix = options.langPrefix; - var langName = '', - fenceName; - var highlighted; - - if (token.params) { - - // - // ```foo bar - // - // Try custom renderer "foo" first. That will simplify overwrite - // for diagrams, latex, and any other fenced block with custom look - // - - fenceName = token.params.split(/\s+/g)[0]; - - if (Remarkable.utils.has(self.rules.fence_custom, fenceName)) { - return self.rules.fence_custom[fenceName](tokens, idx, options, env, self); - } + var token = tokens[idx], + info = token.info ? md.utils.unescapeAll(token.info).trim() : '', + langName = '', + highlighted; - langName = Remarkable.utils.escapeHtml(Remarkable.utils.replaceEntities(Remarkable.utils.unescapeMd(fenceName))); - langClass = ' class="' + langPrefix + langName.replace(/\=$|\=\d+$|\=\+$/, '') + ' hljs"'; + if (info) { + langName = info.split(/\s+/g)[0]; + token.attrJoin('class', options.langPrefix + langName.replace(/\=$|\=\d+$|\=\+$/, '')); + token.attrJoin('class', 'hljs'); } if (options.highlight) { - highlighted = options.highlight(token.content, langName) || Remarkable.utils.escapeHtml(token.content); + highlighted = options.highlight(token.content, langName) || md.utils.escapeHtml(token.content); } else { - highlighted = Remarkable.utils.escapeHtml(token.content); + highlighted = md.utils.escapeHtml(token.content); } - return ' ' + md.renderer.getBreak(tokens, idx); + if (highlighted.indexOf('' + highlighted + '
\n'; }; + //youtube var youtubePlugin = new Plugin( // regexp to match diff --git a/public/js/syncscroll.js b/public/js/syncscroll.js index 0d858db7..85a62c32 100644 --- a/public/js/syncscroll.js +++ b/public/js/syncscroll.js @@ -1,143 +1,91 @@ -// -// Inject line numbers for sync scroll. Notes: -// -// - We track only headings and paragraphs on first level. That's enougth. -// - Footnotes content causes jumps. Level limit filter it automatically. -// -md.renderer.rules.blockquote_open = function (tokens, idx /*, options, env */ ) { - if (tokens[idx].lines && tokens[idx].level === 0) { - var startline = tokens[idx].lines[0] + 1; - var endline = tokens[idx].lines[1]; - return '' + + highlighted + + '
\n'; +// Inject line numbers for sync scroll. + +function addPart(tokens, idx) { + if (tokens[idx].map && tokens[idx].level === 0) { + var startline = tokens[idx].map[0] + 1; + var endline = tokens[idx].map[1]; + tokens[idx].attrJoin('class', 'part'); + tokens[idx].attrJoin('data-startline', startline); + tokens[idx].attrJoin('data-endline', endline); } - return '\n'; -}; +} -md.renderer.rules.table_open = function (tokens, idx /*, options, env */ ) { - if (tokens[idx].lines && tokens[idx].level === 0) { - var startline = tokens[idx].lines[0] + 1; - var endline = tokens[idx].lines[1]; - return '