Работа над XmlParser

This commit is contained in:
Book Pauk
2022-11-09 17:22:18 +07:00
parent 18da23530b
commit 28963116c3

View File

@@ -186,7 +186,8 @@ class NodeObject extends NodeBase {
return; return;
for (const n of this.raw[3]) { for (const n of this.raw[3]) {
callback(new NodeObject(n)); if (callback(new NodeObject(n)) === false)
break;
} }
return this; return this;
@@ -199,10 +200,13 @@ class NodeObject extends NodeBase {
const deep = (nodes, route = '') => { const deep = (nodes, route = '') => {
for (const n of nodes) { for (const n of nodes) {
const node = new NodeObject(n); const node = new NodeObject(n);
callback(node, route);
if (callback(node, route) === false)
return false;
if (node.type === NODE && node.value) { if (node.type === NODE && node.value) {
deep(node.value, `${route}${route ? '/' : ''}${node.name}`); if (deep(node.value, `${route}${route ? '/' : ''}${node.name}`) === false)
return false;
} }
} }
} }
@@ -332,13 +336,15 @@ class XmlParser extends NodeBase {
each(callback, self = false) { each(callback, self = false) {
if (self) { if (self) {
for (const n of this.rawNodes) { for (const n of this.rawNodes) {
callback(new NodeObject(n)); if (callback(new NodeObject(n)) === false);
return this;
} }
} else { } else {
for (const n of this.rawNodes) { for (const n of this.rawNodes) {
if (n[0] === NODE && n[3]) { if (n[0] === NODE && n[3]) {
for (const nn of n[3]) for (const nn of n[3])
callback(new NodeObject(nn)); if (callback(new NodeObject(nn)) === false)
return this;
} }
} }
} }
@@ -354,10 +360,13 @@ class XmlParser extends NodeBase {
const deep = (nodes, route = '') => { const deep = (nodes, route = '') => {
for (const n of nodes) { for (const n of nodes) {
const node = new NodeObject(n); const node = new NodeObject(n);
callback(node, route);
if (callback(node, route) === false)
return false;
if (node.type === NODE && node.value) { if (node.type === NODE && node.value) {
deep(node.value, `${route}${route ? '/' : ''}${node.name}`); if (deep(node.value, `${route}${route ? '/' : ''}${node.name}`) === false)
return false;
} }
} }
} }
@@ -367,7 +376,8 @@ class XmlParser extends NodeBase {
} else { } else {
for (const n of this.rawNodes) { for (const n of this.rawNodes) {
if (n[0] === NODE && n[3]) if (n[0] === NODE && n[3])
deep(n[3]); if (deep(n[3]) === false)
break;
} }
} }
@@ -750,8 +760,11 @@ class XmlParser extends NodeBase {
return this; return this;
} }
navigator() { navigator(obj) {
return new ObjectNavigator(this.toObject()); if (!obj)
obj = this.toObject();
return new ObjectNavigator(obj);
} }
} }