summaryrefslogtreecommitdiff
path: root/public/js/extra.js
diff options
context:
space:
mode:
authorCheng-Han, Wu2016-02-22 08:58:06 +0800
committerCheng-Han, Wu2016-02-22 08:58:06 +0800
commit2dc2fbe162f8a24543caeace106550177f5df0c4 (patch)
tree213819dbe266c533ddbb1fe763094506c08d516f /public/js/extra.js
parent229740e478fc808a6e4fdece62c5158ead5f66e4 (diff)
Change markdown engine from remarkable to markdown-it
Diffstat (limited to 'public/js/extra.js')
-rw-r--r--public/js/extra.js80
1 files changed, 40 insertions, 40 deletions
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 '<img class="raw"' + src + alt + title + suffix + '>';
-}
-md.renderer.rules.list_item_open = function ( /* tokens, idx, options, env */ ) {
- return '<li class="raw">';
+md.use(window.markdownitAbbr);
+md.use(window.markdownitFootnote);
+md.use(window.markdownitDeflist);
+md.use(window.markdownitMark);
+md.use(window.markdownitIns);
+md.use(window.markdownitSub);
+md.use(window.markdownitSup);
+
+md.renderer.rules.image = function (tokens, idx, options, env, self) {
+ tokens[idx].attrJoin('class', 'raw');
+ return self.renderToken.apply(self, arguments);
+};
+md.renderer.rules.list_item_open = function (tokens, idx, options, env, self) {
+ tokens[idx].attrJoin('class', 'raw');
+ return self.renderToken.apply(self, arguments);
};
-md.renderer.rules.blockquote_open = function (tokens, idx /*, options, env */ ) {
- return '<blockquote class="raw">\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 '<h' + tokens[idx].hLevel + ' class="raw">';
+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 '<pre><code' + langClass + '>' + highlighted + '</code></pre>' + md.renderer.getBreak(tokens, idx);
+ if (highlighted.indexOf('<pre') === 0) {
+ return highlighted + '\n';
+ }
+
+ return '<pre><code' + self.renderAttrs(token) + '>'
+ + highlighted
+ + '</code></pre>\n';
};
+
//youtube
var youtubePlugin = new Plugin(
// regexp to match