diff --git a/client/components/Reader/share/BookParser.js b/client/components/Reader/share/BookParser.js index 45de62d9..cbf7e949 100644 --- a/client/components/Reader/share/BookParser.js +++ b/client/components/Reader/share/BookParser.js @@ -111,7 +111,7 @@ export default class BookParser { growParagraph(`<${tag}>`, 0); } - if (tag == 'title') + if (tag == 'title' || tag == 'subtitle') center = true; }); @@ -121,7 +121,7 @@ export default class BookParser { growParagraph(``, 0); } - if (tag == 'title') + if (tag == 'title' || tag == 'subtitle') center = false; path = path.substr(0, path.length - tag.length - 1); diff --git a/server/core/BookConverter/index.js b/server/core/BookConverter/index.js index 518bae0f..9318e9b6 100644 --- a/server/core/BookConverter/index.js +++ b/server/core/BookConverter/index.js @@ -52,6 +52,7 @@ class BookConverter { let tag = '';// eslint-disable-line no-unused-vars let inText = false; + let center = false; const newParagraph = () => { pars.push({_n: 'p', _t: ''}); @@ -87,6 +88,11 @@ class BookConverter { case 'b': growParagraph(''); break; + case 'div': + const a = getAttr(); + if (a && a.align == 'center') + center = true; + break; } } @@ -116,11 +122,20 @@ class BookConverter { case 'b': growParagraph(''); break; + case 'div': + center = false; + break; } } }); parser.on('textNode', (text) => {// eslint-disable-line no-unused-vars + if (text != ' ' && text.trim() == '') + text = text.trim(); + + if (text == '') + return; + switch (path) { case '/html/body/center/h2': titleInfo['book-title'] = text; @@ -137,8 +152,12 @@ class BookConverter { titleInfo.author['middle-name'] = text[2]; return; } + + let cOpen = (center ? '' : ''); + let cClose = (center ? '' : ''); + if (inText) - growParagraph(text); + growParagraph(`${cOpen}${text}${cClose}`); }); parser.on('cdata', (data) => {// eslint-disable-line no-unused-vars