diff --git a/client/components/Reader/share/BookParser.js b/client/components/Reader/share/BookParser.js index 025880df..259e0d28 100644 --- a/client/components/Reader/share/BookParser.js +++ b/client/components/Reader/share/BookParser.js @@ -3,6 +3,7 @@ import sax from '../../../../server/core/sax'; import * as utils from '../../../share/utils'; const maxImageLineCount = 100; +const maxParaTextLength = 10000; // defaults const defaultSettings = { @@ -226,13 +227,25 @@ export default class BookParser { paraOffset += len; }; - const growParagraph = (text, len) => { + const growParagraph = (text, len, textRaw) => { if (paraIndex < 0) { newParagraph(); growParagraph(text, len); return; } + //ограничение на размер куска текста в параграфе + if (textRaw && textRaw.length > maxParaTextLength) { + while (textRaw.length > 0) { + const textPart = textRaw.substring(0, maxParaTextLength); + textRaw = textRaw.substring(maxParaTextLength); + + newParagraph(); + growParagraph(textPart, textPart.length); + } + return; + } + if (inSubtitle) { curSubtitle.title += text; } else if (inTitle) { @@ -536,7 +549,7 @@ export default class BookParser { tClose += (center ? '' : ''); if (text != ' ') - growParagraph(`${tOpen}${text}${tClose}`, text.length); + growParagraph(`${tOpen}${text}${tClose}`, text.length, text); else growParagraph(' ', 1); }