From 71a04affff9df14bbb3aadf659e8c7a557a9023b Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Thu, 31 Jan 2019 00:50:28 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B1=D0=B0=D0=B3=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/BookConverter/sax.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/server/core/BookConverter/sax.js b/server/core/BookConverter/sax.js index 435a4f26..aa6c3b7d 100644 --- a/server/core/BookConverter/sax.js +++ b/server/core/BookConverter/sax.js @@ -18,6 +18,7 @@ function parseSync(xstr, options) { let cutTag = ''; let inCdata; let inComment; + let leftData = 0; while (i < len) { inCdata = false; inComment = false; @@ -26,7 +27,7 @@ function parseSync(xstr, options) { let left = xstr.indexOf('<', i); if (left < 0) break; - let leftData = left; + leftData = left; if (left < len - 2 && xstr[left + 1] == '!') { if (xstr[left + 2] == '-') { @@ -46,6 +47,9 @@ function parseSync(xstr, options) { } } + const text = xstr.substr(i, left - i); + _onTextNode(text, cutCounter, cutTag); + let right = null; let rightData = null; if (inCdata) { @@ -87,10 +91,6 @@ function parseSync(xstr, options) { } tag = tag.toLowerCase(); - const text = xstr.substr(i, left - i); - - _onTextNode(text, cutCounter, cutTag); - let endTag = (singleTag ? tag : ''); if (tag === '' || tag[0] !== '/') { _onStartNode(tag, tail, singleTag, cutCounter, cutTag); @@ -123,9 +123,9 @@ function parseSync(xstr, options) { if (i < len) { if (inCdata) { - _onCdata(xstr.substr(i, len - i), cutCounter, cutTag); + _onCdata(xstr.substr(leftData, len - leftData), cutCounter, cutTag); } else if (inComment) { - _onComment(xstr.substr(i, len - i), cutCounter, cutTag); + _onComment(xstr.substr(leftData, len - leftData), cutCounter, cutTag); } else { _onTextNode(xstr.substr(i, len - i), cutCounter, cutTag); } @@ -156,6 +156,7 @@ async function parse(xstr, options) { let cutTag = ''; let inCdata; let inComment; + let leftData = 0; while (i < len) { inCdata = false; inComment = false; @@ -164,7 +165,7 @@ async function parse(xstr, options) { let left = xstr.indexOf('<', i); if (left < 0) break; - let leftData = left; + leftData = left; if (left < len - 2 && xstr[left + 1] == '!') { if (xstr[left + 2] == '-') { @@ -184,6 +185,9 @@ async function parse(xstr, options) { } } + const text = xstr.substr(i, left - i); + await _onTextNode(text, cutCounter, cutTag); + let right = null; let rightData = null; if (inCdata) { @@ -225,10 +229,6 @@ async function parse(xstr, options) { } tag = tag.toLowerCase(); - const text = xstr.substr(i, left - i); - - await _onTextNode(text, cutCounter, cutTag); - let endTag = (singleTag ? tag : ''); if (tag === '' || tag[0] !== '/') { await _onStartNode(tag, tail, singleTag, cutCounter, cutTag); @@ -261,9 +261,9 @@ async function parse(xstr, options) { if (i < len) { if (inCdata) { - await _onCdata(xstr.substr(i, len - i), cutCounter, cutTag); + await _onCdata(xstr.substr(leftData, len - leftData), cutCounter, cutTag); } else if (inComment) { - await _onComment(xstr.substr(i, len - i), cutCounter, cutTag); + await _onComment(xstr.substr(leftData, len - leftData), cutCounter, cutTag); } else { await _onTextNode(xstr.substr(i, len - i), cutCounter, cutTag); }