fix html toc parsing

Handle wrong notation such as header 3 under header 1 directly.

Signed-off-by: Le Tan <tamlokveer@gmail.com>
This commit is contained in:
Le Tan 2016-11-07 22:12:16 +08:00
parent ab91f755c0
commit ae0130aa26
2 changed files with 9 additions and 5 deletions

View File

@ -298,16 +298,17 @@ void VEditTab::parseTocLi(QXmlStreamReader &xml, QVector<VHeader> &headers, int
qWarning() << "error: TOC HTML <a> should be ended by </a>" << xml.name();
return;
}
VHeader header;
header.level = level;
header.name = name;
header.anchor = anchor;
header.lineNumber = -1;
VHeader header(level, name, anchor, -1);
headers.append(header);
} else {
// Error
return;
}
} else if (xml.name() == "ul") {
// Such as header 3 under header 1 directly
VHeader header(level, "[Empty]", "#", -1);
headers.append(header);
parseTocUl(xml, headers, level + 1);
} else {
qWarning() << "error: TOC HTML <li> should contain <a> or <ul>" << xml.name();
return;

View File

@ -12,6 +12,9 @@ enum VHeaderType
struct VHeader
{
VHeader() : level(1), lineNumber(-1) {}
VHeader(int level, const QString &name, const QString &anchor, int lineNumber)
: level(level), name(name), anchor(anchor), lineNumber(lineNumber) {}
int level;
QString name;
QString anchor;