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

This commit is contained in:
Book Pauk
2019-01-31 00:50:28 +07:00
parent f4d7b63f4b
commit 71a04affff

View File

@@ -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);
} }