From 0ec510b499d8f51b318e509885eaffec11c2c96a Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 16 Jan 2019 02:24:24 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=BC=D0=B5=D0=B6=D1=83?= =?UTF-8?q?=D1=82=D0=BE=D1=87=D0=BD=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=BC=D0=BC?= =?UTF-8?q?=D0=B8=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/Reader.vue | 1 - client/components/Reader/share/BookParser.js | 38 +++++++++++++++++--- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index 1404e4bd..b38922c7 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -41,7 +41,6 @@ -
{{ lastOpenedBook }}
diff --git a/client/components/Reader/share/BookParser.js b/client/components/Reader/share/BookParser.js index bb1fc59a..cc9e33d5 100644 --- a/client/components/Reader/share/BookParser.js +++ b/client/components/Reader/share/BookParser.js @@ -3,8 +3,6 @@ import {sleep} from '../../../share/utils'; export default class BookParser { constructor() { - this.parser = new EasySAXParser(); - // defaults this.p = 30;// px, отступ параграфа this.w = 300;// px, ширина страницы @@ -87,7 +85,7 @@ export default class BookParser { paraOffset += p.length; }; - const parser = this.parser; + const parser = new EasySAXParser(); parser.on('error', (msgError) => {// eslint-disable-line no-unused-vars }); @@ -222,6 +220,20 @@ export default class BookParser { return result; } + removeTags(s) { + let result = ''; + + const parser = new EasySAXParser(); + + parser.on('textNode', (text) => { + result += text; + }); + + parser.parse(s); + + return result; + } + parsePara(paraIndex) { const para = this.para[paraIndex]; @@ -250,7 +262,25 @@ export default class BookParser { } }*/ - // + // тут начинается самый замес, перенос и выравниване по ширине + const text = this.removeTags(para.text); + const words = text.split(' '); + let line = {begin: para.offset, parts: []}; + let part = ''; + for (let i = 0; i < words.length; i++) { + const word = words[i]; + if (i > 0) + part += ' '; + part += word; + + if (this.measureText(part) >= parsed.w) { + line.parts.push(part); + line.end = line.begin + part.length - 1; + lines.push(line); + part = ''; + line = {begin: line.end + 1, parts: []}; + } + } parsed.lines = lines; para.parsed = parsed;