From 98fac2bf11facc5aca63b96e3524520be89e98f2 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Tue, 8 Nov 2022 14:42:28 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B4=20XmlParser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/xml/XmlParser.js | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/server/core/xml/XmlParser.js b/server/core/xml/XmlParser.js index f3c69cf..eb86598 100644 --- a/server/core/xml/XmlParser.js +++ b/server/core/xml/XmlParser.js @@ -201,7 +201,7 @@ class NodeObject extends NodeBase { callback(node, route); if (node.type === NODE && node.value) { - deep(node.value, route + `/${node.name}`); + deep(node.value, `${route}${route ? '/' : ''}${node.name}`); } } } @@ -328,31 +328,49 @@ class XmlParser extends NodeBase { return this; } - each(callback) { - for (const n of this.rawNodes) { - callback(new NodeObject(n)); + each(callback, self = false) { + if (self) { + for (const n of this.rawNodes) { + callback(new NodeObject(n)); + } + } else { + for (const n of this.rawNodes) { + if (n[0] === NODE && n[3]) + callback(new NodeObject(n[3])); + } } return this; } - eachDeep(callback) { + eachDeep(callback, self = false) { const deep = (nodes, route = '') => { for (const n of nodes) { const node = new NodeObject(n); callback(node, route); if (node.type === NODE && node.value) { - deep(node.value, route + `/${node.name}`); + deep(node.value, `${route}${route ? '/' : ''}${node.name}`); } } } - deep(this.rawNodes); + if (self) { + deep(this.rawNodes); + } else { + for (const n of this.rawNodes) { + if (n[0] === NODE && n[3]) + deep(n[3]); + } + } return this; } + eachDeepSelf(callback) { + return this.eachDeep(callback, true); + } + rawSelect(nodes, selectorObj, callback) { for (const n of nodes) if (this.checkNode(n, selectorObj))