speed up html displaying

Signed-off-by: Le Tan <tamlokveer@gmail.com>
This commit is contained in:
Le Tan 2016-10-11 22:17:51 +08:00
parent 1cd8a9740d
commit 772e0e95c8

View File

@ -39,10 +39,17 @@
} }
}); });
var markdownToHtml = function (markdown) { var markdownToHtml = function (markdown, needToc) {
return marked(markdown, { renderer: renderer }); toc = [];
if (needToc) {
var html = marked(markdown, { renderer: renderer });
return html.replace(/<p>\[TOC\]<\/p>/ig, '<div class="vnote-toc"></div>');
} else {
return marked(markdown);
}
}; };
// Handle wrong title levels, such as '#' followed by '###'
var toPerfectToc = function (toc) { var toPerfectToc = function (toc) {
var i; var i;
var curLevel = 1; var curLevel = 1;
@ -67,6 +74,7 @@
return '<a href=#' + item.anchor + '>' + item.title + '</a>'; return '<a href=#' + item.anchor + '>' + item.title + '</a>';
}; };
// Turn a perfect toc to a tree using <ul>
var tocToTree = function (toc) { var tocToTree = function (toc) {
var i; var i;
var front = '<li>'; var front = '<li>';
@ -107,15 +115,27 @@
return front; return front;
}; };
var addToc = function(html) { var addToc = function() {
var tocTree = tocToTree(toPerfectToc(toc)); var tocTree = tocToTree(toPerfectToc(toc));
html = html.replace(/<p>\[TOC\]<\/p>/ig, tocTree); var eles = document.getElementsByClassName('vnote-toc');
return html; for (var i = 0; i < eles.length; ++i) {
eles[i].innerHTML = tocTree;
}
};
var mdHasTocSection = function(markdown) {
var n = markdown.search(/(\n|^)\[toc\]/i);
return n != -1;
}; };
var updateText = function(text) { var updateText = function(text) {
var html = markdownToHtml(text); var needToc = mdHasTocSection(text);
placeholder.innerHTML = addToc(html); var html = markdownToHtml(text, needToc);
placeholder.innerHTML = html;
if (needToc) {
addToc();
}
}; };
new QWebChannel(qt.webChannelTransport, new QWebChannel(qt.webChannelTransport,