From f2eb0d29af867fbf55e34213bd113726e3123fed Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 22 Jan 2019 21:41:36 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B8=20=D1=86=D0=B5=D0=BD=D1=82=D1=80=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B7=D0=B0=D0=B3=D0=BE=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/share/BookParser.js | 4 ++-- server/core/BookConverter/index.js | 21 +++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) 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