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