mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 05:49:53 +08:00
speed up html displaying
Signed-off-by: Le Tan <tamlokveer@gmail.com>
This commit is contained in:
parent
1cd8a9740d
commit
772e0e95c8
@ -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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user