Улчшение парсинга samlib

This commit is contained in:
Book Pauk
2019-02-15 18:21:37 +07:00
parent 4d1485a61f
commit 55ad2d664d

View File

@@ -237,6 +237,8 @@ class BookConverter {
let node = {_a: pars};
let inPara = false;
let italic = false;
let bold = false;
const openTag = (name) => {
if (name == 'p')
@@ -249,8 +251,11 @@ class BookConverter {
const closeTag = (name) => {
if (name == 'p')
inPara = false;
if (node._n == name && node._p) {
if (node._p) {
const exact = (node._n == name);
node = node._p;
if (!exact)
closeTag(name);
}
};
@@ -283,9 +288,11 @@ class BookConverter {
break;
case 'i':
openTag('emphasis');
italic = true;
break;
case 'b':
openTag('strong');
bold = true;
break;
case 'div':
if (tail.indexOf('align="center"') >= 0) {
@@ -331,9 +338,11 @@ class BookConverter {
break;
case 'i':
closeTag('emphasis');
italic = false;
break;
case 'b':
closeTag('strong');
bold = false;
break;
case 'div':
if (inSubtitle) {
@@ -381,8 +390,13 @@ class BookConverter {
return;
}
let tOpen = (bold ? '<strong>' : '');
tOpen += (italic ? '<emphasis>' : '');
let tClose = (italic ? '</emphasis>' : '');
tClose += (bold ? '</strong>' : '');
if (inText)
growParagraph(text);
growParagraph(`${tOpen}${text}${tClose}`);
};
sax.parseSync(repSpaces(this.decode(data).toString()), {