From db3ecde7414b24065cc4f9727d9c32a12249970f Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 22 Jan 2019 22:22:59 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=BD=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BF=D0=BE=20=D1=81=D0=BA?= =?UTF-8?q?=D0=BE=D1=80=D0=BE=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/BookConverter/easysaxmod.js | 15 ++++++--------- server/core/BookConverter/index.js | 4 ++-- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/server/core/BookConverter/easysaxmod.js b/server/core/BookConverter/easysaxmod.js index 9ac1a2e8..331e78ed 100644 --- a/server/core/BookConverter/easysaxmod.js +++ b/server/core/BookConverter/easysaxmod.js @@ -433,6 +433,7 @@ function EasySAXParser(config) { async function parse() { var stacknsmatrix = []; var nodestack = []; + var nodestackCopy = []; var stopIndex = 0; var _nsmatrix; var isTagStart = false; @@ -574,27 +575,22 @@ function EasySAXParser(config) { //return; } - let poped = []; x = elem = nodestack.pop(); - poped.push(elem); q = i + 2 + elem.length; while (nodestack.length && elem !== xml.substring(i + 2, q)) { onError(returnError = 'close tag, not equal to the open tag'); //return; x = elem = nodestack.pop(); - poped.push(elem); q = i + 2 + elem.length; } - if (elem === xml.substring(i + 2, q)) - poped.unshift(); - if (nodestack.length == 0) { - while (poped.length) { - nodestack.push(poped.pop()); - } + nodestack = nodestackCopy.slice(); isTagEnd = false; + } else { + if (elem === xml.substring(i + 2, q)) + nodestackCopy = nodestack.slice(); } // проверим что в закрываюшем теге нет лишнего @@ -647,6 +643,7 @@ function EasySAXParser(config) { if (!isTagEnd) { nodestack.push(elem); + nodestackCopy.push(elem); } } diff --git a/server/core/BookConverter/index.js b/server/core/BookConverter/index.js index 9318e9b6..553ce6d2 100644 --- a/server/core/BookConverter/index.js +++ b/server/core/BookConverter/index.js @@ -89,7 +89,7 @@ class BookConverter { growParagraph(''); break; case 'div': - const a = getAttr(); + var a = getAttr(); if (a && a.align == 'center') center = true; break; @@ -177,7 +177,7 @@ class BookConverter { }); */ - const charsetAll = chardet.detectAll(data); + const charsetAll = chardet.detectAll(data.slice(0, 10000)); let selected = 'ISO-8859-1'; for (const charset of charsetAll) {