浏览代码

Поправки багов

Book Pauk 6 年之前
父节点
当前提交
71a04affff
共有 1 个文件被更改,包括 14 次插入14 次删除
  1. 14 14
      server/core/BookConverter/sax.js

+ 14 - 14
server/core/BookConverter/sax.js

@@ -18,6 +18,7 @@ function parseSync(xstr, options) {
     let cutTag = '';
     let cutTag = '';
     let inCdata;
     let inCdata;
     let inComment;
     let inComment;
+    let leftData = 0;
     while (i < len) {
     while (i < len) {
         inCdata = false;
         inCdata = false;
         inComment = false;
         inComment = false;
@@ -26,7 +27,7 @@ function parseSync(xstr, options) {
         let left = xstr.indexOf('<', i);
         let left = xstr.indexOf('<', i);
         if (left < 0)
         if (left < 0)
             break;
             break;
-        let leftData = left;
+        leftData = left;
 
 
         if (left < len - 2 && xstr[left + 1] == '!') {
         if (left < len - 2 && xstr[left + 1] == '!') {
             if (xstr[left + 2] == '-') {
             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 right = null;
         let rightData = null;
         let rightData = null;
         if (inCdata) {
         if (inCdata) {
@@ -87,10 +91,6 @@ function parseSync(xstr, options) {
             }
             }
             tag = tag.toLowerCase();
             tag = tag.toLowerCase();
 
 
-            const text = xstr.substr(i, left - i);
-
-            _onTextNode(text, cutCounter, cutTag);
-
             let endTag = (singleTag ? tag : '');
             let endTag = (singleTag ? tag : '');
             if (tag === '' || tag[0] !== '/') {
             if (tag === '' || tag[0] !== '/') {
                 _onStartNode(tag, tail, singleTag, cutCounter, cutTag);
                 _onStartNode(tag, tail, singleTag, cutCounter, cutTag);
@@ -123,9 +123,9 @@ function parseSync(xstr, options) {
 
 
     if (i < len) {
     if (i < len) {
         if (inCdata) {
         if (inCdata) {
-            _onCdata(xstr.substr(i, len - i), cutCounter, cutTag);
+            _onCdata(xstr.substr(leftData, len - leftData), cutCounter, cutTag);
         } else if (inComment) {
         } else if (inComment) {
-            _onComment(xstr.substr(i, len - i), cutCounter, cutTag);
+            _onComment(xstr.substr(leftData, len - leftData), cutCounter, cutTag);
         } else {
         } else {
             _onTextNode(xstr.substr(i, len - i), cutCounter, cutTag);
             _onTextNode(xstr.substr(i, len - i), cutCounter, cutTag);
         }
         }
@@ -156,6 +156,7 @@ async function parse(xstr, options) {
     let cutTag = '';
     let cutTag = '';
     let inCdata;
     let inCdata;
     let inComment;
     let inComment;
+    let leftData = 0;
     while (i < len) {
     while (i < len) {
         inCdata = false;
         inCdata = false;
         inComment = false;
         inComment = false;
@@ -164,7 +165,7 @@ async function parse(xstr, options) {
         let left = xstr.indexOf('<', i);
         let left = xstr.indexOf('<', i);
         if (left < 0)
         if (left < 0)
             break;
             break;
-        let leftData = left;
+        leftData = left;
 
 
         if (left < len - 2 && xstr[left + 1] == '!') {
         if (left < len - 2 && xstr[left + 1] == '!') {
             if (xstr[left + 2] == '-') {
             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 right = null;
         let rightData = null;
         let rightData = null;
         if (inCdata) {
         if (inCdata) {
@@ -225,10 +229,6 @@ async function parse(xstr, options) {
             }
             }
             tag = tag.toLowerCase();
             tag = tag.toLowerCase();
 
 
-            const text = xstr.substr(i, left - i);
-
-            await _onTextNode(text, cutCounter, cutTag);
-
             let endTag = (singleTag ? tag : '');
             let endTag = (singleTag ? tag : '');
             if (tag === '' || tag[0] !== '/') {
             if (tag === '' || tag[0] !== '/') {
                 await _onStartNode(tag, tail, singleTag, cutCounter, cutTag);
                 await _onStartNode(tag, tail, singleTag, cutCounter, cutTag);
@@ -261,9 +261,9 @@ async function parse(xstr, options) {
 
 
     if (i < len) {
     if (i < len) {
         if (inCdata) {
         if (inCdata) {
-            await _onCdata(xstr.substr(i, len - i), cutCounter, cutTag);
+            await _onCdata(xstr.substr(leftData, len - leftData), cutCounter, cutTag);
         } else if (inComment) {
         } else if (inComment) {
-            await _onComment(xstr.substr(i, len - i), cutCounter, cutTag);
+            await _onComment(xstr.substr(leftData, len - leftData), cutCounter, cutTag);
         } else {
         } else {
             await _onTextNode(xstr.substr(i, len - i), cutCounter, cutTag);
             await _onTextNode(xstr.substr(i, len - i), cutCounter, cutTag);
         }
         }