diff --git a/client/components/Reader/share/BookParser.js b/client/components/Reader/share/BookParser.js index 201ffd54..8412d9fd 100644 --- a/client/components/Reader/share/BookParser.js +++ b/client/components/Reader/share/BookParser.js @@ -59,7 +59,6 @@ export default class BookParser { offset: Number, //сумма всех length до этого параграфа length: Number, //длина text без тегов text: String, //текст параграфа с вложенными тегами - cut: Boolean, //параграф - кандидат на сокрытие (cutEmptyParagraphs) addIndex: Number, //индекс добавляемого пустого параграфа (addEmptyParagraphs) } */ @@ -116,7 +115,6 @@ export default class BookParser { offset: paraOffset, length: len, text: text, - cut: (!addIndex && (len == 1 && text[0] == ' ')), addIndex: (addIndex ? addIndex : 0), }; @@ -132,10 +130,10 @@ export default class BookParser { } let p = para[paraIndex]; - //добавление пустых (addEmptyParagraphs) параграфов + paraOffset -= p.length; + //добавление пустых (addEmptyParagraphs) параграфов перед текущим if (p.length == 1 && p.text[0] == ' ' && len > 0) { paraIndex--; - paraOffset -= p.length; for (let i = 0; i < 2; i++) { newParagraph(' ', 1, i + 1); } @@ -144,15 +142,10 @@ export default class BookParser { p.index = paraIndex; p.offset = paraOffset; para[paraIndex] = p; - paraOffset += p.length; - } - paraOffset -= p.length; - //параграф оказался непустой - if (p.length == 1 && p.text[0] == ' ' && len > 0) { + //уберем начальный пробел p.length = 0; p.text = p.text.substr(1); - p.cut = (len == 1 && text[0] == ' '); } p.length += len; @@ -633,10 +626,7 @@ export default class BookParser { imageHeightLines: this.imageHeightLines, imageFitWidth: this.imageFitWidth, compactTextPerc: this.compactTextPerc, - visible: !( - (this.cutEmptyParagraphs && para.cut) || - (para.addIndex > this.addEmptyParagraphs) - ) + visible: true, //вычисляется позже }; @@ -652,9 +642,12 @@ export default class BookParser { text: String, } }*/ + let parts = this.splitToStyle(para.text); + //инициализация парсера let line = {begin: para.offset, parts: []}; + let paragraphText = '';//текст параграфа let partText = '';//накапливаемый кусок со стилем let str = '';//измеряемая строка @@ -667,6 +660,7 @@ export default class BookParser { // тут начинается самый замес, перенос по слогам и стилизация, а также изображения for (const part of parts) { style = part.style; + paragraphText += part.text; //изображения if (part.image.id && !part.image.inline) { @@ -837,6 +831,12 @@ export default class BookParser { } } + //parsed.visible + parsed.visible = !( + (para.addIndex > this.addEmptyParagraphs) || + (para.addIndex == 0 && this.cutEmptyParagraphs && paragraphText.trim() == '') + ); + parsed.lines = lines; para.parsed = parsed;