|
@@ -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()), {
|