diff --git a/server/core/BookConverter/index.js b/server/core/BookConverter/index.js index 9160629c..e50be9ab 100644 --- a/server/core/BookConverter/index.js +++ b/server/core/BookConverter/index.js @@ -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 ? '' : ''); + tOpen += (italic ? '' : ''); + let tClose = (italic ? '' : ''); + tClose += (bold ? '' : ''); + if (inText) - growParagraph(text); + growParagraph(`${tOpen}${text}${tClose}`); }; sax.parseSync(repSpaces(this.decode(data).toString()), {