Diff
checker
文本
文本
图像
文档
Excel
文件夹
Legal
Enterprise
桌面版
定价
登录
下载 Diffchecker 桌面版
比较文本
查找两个文本文件之间的差异
工具
历史
实时编辑器
折叠未更改行
关闭换行
视图
拆分
统一
比对精度
智能
单词
字符
语法高亮
选择语法
忽略
文本转换
转到第一个差异
编辑输入
Diffchecker Desktop
运行Diffchecker最安全的方式。获取Diffchecker桌面应用:您的差异永远不会离开您的电脑!
获取桌面版
webpack:///node_modules/html-dom-parser/node_modules/domhandler/lib/node.js and webpack:///node_modules/html-react-parser/node_modules/domhandler/lib/node.js
创建于
4年前
差异永不过期
清除
导出
分享
两个文本完全相同
这两个文本之间没有差异
0 删除
行
总计
删除
字符
总计
删除
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
475 行
全部复制
0 添加
行
总计
添加
字符
总计
添加
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
475 行
全部复制
"use strict";
"use strict";
var __extends = (this && this.__extends) || (function () {
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
return extendStatics(d, b);
};
};
return function (d, b) {
return function (d, b) {
if (typeof b !== "function" && b !== null)
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
extendStatics(d, b);
function __() { this.constructor = d; }
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
};
})();
})();
var __assign = (this && this.__assign) || function () {
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
t[p] = s[p];
}
}
return t;
return t;
};
};
return __assign.apply(this, arguments);
return __assign.apply(this, arguments);
};
};
Object.defineProperty(exports, "__esModule", { value: true });
Object.defineProperty(exports, "__esModule", { value: true });
exports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.CDATA = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;
exports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.CDATA = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;
var domelementtype_1 = require("domelementtype");
var domelementtype_1 = require("domelementtype");
/**
/**
* This object will be used as the prototype for Nodes when creating a
* This object will be used as the prototype for Nodes when creating a
* DOM-Level-1-compliant structure.
* DOM-Level-1-compliant structure.
*/
*/
var Node = /** @class */ (function () {
var Node = /** @class */ (function () {
function Node() {
function Node() {
/** Parent of the node */
/** Parent of the node */
this.parent = null;
this.parent = null;
/** Previous sibling */
/** Previous sibling */
this.prev = null;
this.prev = null;
/** Next sibling */
/** Next sibling */
this.next = null;
this.next = null;
/** The start index of the node. Requires `withStartIndices` on the handler to be `true. */
/** The start index of the node. Requires `withStartIndices` on the handler to be `true. */
this.startIndex = null;
this.startIndex = null;
/** The end index of the node. Requires `withEndIndices` on the handler to be `true. */
/** The end index of the node. Requires `withEndIndices` on the handler to be `true. */
this.endIndex = null;
this.endIndex = null;
}
}
Object.defineProperty(Node.prototype, "parentNode", {
Object.defineProperty(Node.prototype, "parentNode", {
// Read-write aliases for properties
// Read-write aliases for properties
/**
/**
* Same as {@link parent}.
* Same as {@link parent}.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
*/
*/
get: function () {
get: function () {
return this.parent;
return this.parent;
},
},
set: function (parent) {
set: function (parent) {
this.parent = parent;
this.parent = parent;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
Object.defineProperty(Node.prototype, "previousSibling", {
Object.defineProperty(Node.prototype, "previousSibling", {
/**
/**
* Same as {@link prev}.
* Same as {@link prev}.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
*/
*/
get: function () {
get: function () {
return this.prev;
return this.prev;
},
},
set: function (prev) {
set: function (prev) {
this.prev = prev;
this.prev = prev;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
Object.defineProperty(Node.prototype, "nextSibling", {
Object.defineProperty(Node.prototype, "nextSibling", {
/**
/**
* Same as {@link next}.
* Same as {@link next}.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
*/
*/
get: function () {
get: function () {
return this.next;
return this.next;
},
},
set: function (next) {
set: function (next) {
this.next = next;
this.next = next;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
/**
/**
* Clone this node, and optionally its children.
* Clone this node, and optionally its children.
*
*
* @param recursive Clone child nodes as well.
* @param recursive Clone child nodes as well.
* @returns A clone of the node.
* @returns A clone of the node.
*/
*/
Node.prototype.cloneNode = function (recursive) {
Node.prototype.cloneNode = function (recursive) {
if (recursive === void 0) { recursive = false; }
if (recursive === void 0) { recursive = false; }
return cloneNode(this, recursive);
return cloneNode(this, recursive);
};
};
return Node;
return Node;
}());
}());
exports.Node = Node;
exports.Node = Node;
/**
/**
* A node that contains some data.
* A node that contains some data.
*/
*/
var DataNode = /** @class */ (function (_super) {
var DataNode = /** @class */ (function (_super) {
__extends(DataNode, _super);
__extends(DataNode, _super);
/**
/**
* @param data The content of the data node
* @param data The content of the data node
*/
*/
function DataNode(data) {
function DataNode(data) {
var _this = _super.call(this) || this;
var _this = _super.call(this) || this;
_this.data = data;
_this.data = data;
return _this;
return _this;
}
}
Object.defineProperty(DataNode.prototype, "nodeValue", {
Object.defineProperty(DataNode.prototype, "nodeValue", {
/**
/**
* Same as {@link data}.
* Same as {@link data}.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
*/
*/
get: function () {
get: function () {
return this.data;
return this.data;
},
},
set: function (data) {
set: function (data) {
this.data = data;
this.data = data;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
return DataNode;
return DataNode;
}(Node));
}(Node));
exports.DataNode = DataNode;
exports.DataNode = DataNode;
/**
/**
* Text within the document.
* Text within the document.
*/
*/
var Text = /** @class */ (function (_super) {
var Text = /** @class */ (function (_super) {
__extends(Text, _super);
__extends(Text, _super);
function Text() {
function Text() {
var _this = _super !== null && _super.apply(this, arguments) || this;
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = domelementtype_1.ElementType.Text;
_this.type = domelementtype_1.ElementType.Text;
return _this;
return _this;
}
}
Object.defineProperty(Text.prototype, "nodeType", {
Object.defineProperty(Text.prototype, "nodeType", {
get: function () {
get: function () {
return 3;
return 3;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
return Text;
return Text;
}(DataNode));
}(DataNode));
exports.Text = Text;
exports.Text = Text;
/**
/**
* Comments within the document.
* Comments within the document.
*/
*/
var Comment = /** @class */ (function (_super) {
var Comment = /** @class */ (function (_super) {
__extends(Comment, _super);
__extends(Comment, _super);
function Comment() {
function Comment() {
var _this = _super !== null && _super.apply(this, arguments) || this;
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = domelementtype_1.ElementType.Comment;
_this.type = domelementtype_1.ElementType.Comment;
return _this;
return _this;
}
}
Object.defineProperty(Comment.prototype, "nodeType", {
Object.defineProperty(Comment.prototype, "nodeType", {
get: function () {
get: function () {
return 8;
return 8;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
return Comment;
return Comment;
}(DataNode));
}(DataNode));
exports.Comment = Comment;
exports.Comment = Comment;
/**
/**
* Processing instructions, including doc types.
* Processing instructions, including doc types.
*/
*/
var ProcessingInstruction = /** @class */ (function (_super) {
var ProcessingInstruction = /** @class */ (function (_super) {
__extends(ProcessingInstruction, _super);
__extends(ProcessingInstruction, _super);
function ProcessingInstruction(name, data) {
function ProcessingInstruction(name, data) {
var _this = _super.call(this, data) || this;
var _this = _super.call(this, data) || this;
_this.name = name;
_this.name = name;
_this.type = domelementtype_1.ElementType.Directive;
_this.type = domelementtype_1.ElementType.Directive;
return _this;
return _this;
}
}
Object.defineProperty(ProcessingInstruction.prototype, "nodeType", {
Object.defineProperty(ProcessingInstruction.prototype, "nodeType", {
get: function () {
get: function () {
return 1;
return 1;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
return ProcessingInstruction;
return ProcessingInstruction;
}(DataNode));
}(DataNode));
exports.ProcessingInstruction = ProcessingInstruction;
exports.ProcessingInstruction = ProcessingInstruction;
/**
/**
* A `Node` that can have children.
* A `Node` that can have children.
*/
*/
var NodeWithChildren = /** @class */ (function (_super) {
var NodeWithChildren = /** @class */ (function (_super) {
__extends(NodeWithChildren, _super);
__extends(NodeWithChildren, _super);
/**
/**
* @param children Children of the node. Only certain node types can have children.
* @param children Children of the node. Only certain node types can have children.
*/
*/
function NodeWithChildren(children) {
function NodeWithChildren(children) {
var _this = _super.call(this) || this;
var _this = _super.call(this) || this;
_this.children = children;
_this.children = children;
return _this;
return _this;
}
}
Object.defineProperty(NodeWithChildren.prototype, "firstChild", {
Object.defineProperty(NodeWithChildren.prototype, "firstChild", {
// Aliases
// Aliases
/** First child of the node. */
/** First child of the node. */
get: function () {
get: function () {
var _a;
var _a;
return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;
return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
Object.defineProperty(NodeWithChildren.prototype, "lastChild", {
Object.defineProperty(NodeWithChildren.prototype, "lastChild", {
/** Last child of the node. */
/** Last child of the node. */
get: function () {
get: function () {
return this.children.length > 0
return this.children.length > 0
? this.children[this.children.length - 1]
? this.children[this.children.length - 1]
: null;
: null;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
Object.defineProperty(NodeWithChildren.prototype, "childNodes", {
Object.defineProperty(NodeWithChildren.prototype, "childNodes", {
/**
/**
* Same as {@link children}.
* Same as {@link children}.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
*/
*/
get: function () {
get: function () {
return this.children;
return this.children;
},
},
set: function (children) {
set: function (children) {
this.children = children;
this.children = children;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
return NodeWithChildren;
return NodeWithChildren;
}(Node));
}(Node));
exports.NodeWithChildren = NodeWithChildren;
exports.NodeWithChildren = NodeWithChildren;
var CDATA = /** @class */ (function (_super) {
var CDATA = /** @class */ (function (_super) {
__extends(CDATA, _super);
__extends(CDATA, _super);
function CDATA() {
function CDATA() {
var _this = _super !== null && _super.apply(this, arguments) || this;
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = domelementtype_1.ElementType.CDATA;
_this.type = domelementtype_1.ElementType.CDATA;
return _this;
return _this;
}
}
Object.defineProperty(CDATA.prototype, "nodeType", {
Object.defineProperty(CDATA.prototype, "nodeType", {
get: function () {
get: function () {
return 4;
return 4;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
return CDATA;
return CDATA;
}(NodeWithChildren));
}(NodeWithChildren));
exports.CDATA = CDATA;
exports.CDATA = CDATA;
/**
/**
* The root node of the document.
* The root node of the document.
*/
*/
var Document = /** @class */ (function (_super) {
var Document = /** @class */ (function (_super) {
__extends(Document, _super);
__extends(Document, _super);
function Document() {
function Document() {
var _this = _super !== null && _super.apply(this, arguments) || this;
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = domelementtype_1.ElementType.Root;
_this.type = domelementtype_1.ElementType.Root;
return _this;
return _this;
}
}
Object.defineProperty(Document.prototype, "nodeType", {
Object.defineProperty(Document.prototype, "nodeType", {
get: function () {
get: function () {
return 9;
return 9;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
return Document;
return Document;
}(NodeWithChildren));
}(NodeWithChildren));
exports.Document = Document;
exports.Document = Document;
/**
/**
* An element within the DOM.
* An element within the DOM.
*/
*/
var Element = /** @class */ (function (_super) {
var Element = /** @class */ (function (_super) {
__extends(Element, _super);
__extends(Element, _super);
/**
/**
* @param name Name of the tag, eg. `div`, `span`.
* @param name Name of the tag, eg. `div`, `span`.
* @param attribs Object mapping attribute names to attribute values.
* @param attribs Object mapping attribute names to attribute values.
* @param children Children of the node.
* @param children Children of the node.
*/
*/
function Element(name, attribs, children, type) {
function Element(name, attribs, children, type) {
if (children === void 0) { children = []; }
if (children === void 0) { children = []; }
if (type === void 0) { type = name === "script"
if (type === void 0) { type = name === "script"
? domelementtype_1.ElementType.Script
? domelementtype_1.ElementType.Script
: name === "style"
: name === "style"
? domelementtype_1.ElementType.Style
? domelementtype_1.ElementType.Style
: domelementtype_1.ElementType.Tag; }
: domelementtype_1.ElementType.Tag; }
var _this = _super.call(this, children) || this;
var _this = _super.call(this, children) || this;
_this.name = name;
_this.name = name;
_this.attribs = attribs;
_this.attribs = attribs;
_this.type = type;
_this.type = type;
return _this;
return _this;
}
}
Object.defineProperty(Element.prototype, "nodeType", {
Object.defineProperty(Element.prototype, "nodeType", {
get: function () {
get: function () {
return 1;
return 1;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
Object.defineProperty(Element.prototype, "tagName", {
Object.defineProperty(Element.prototype, "tagName", {
// DOM Level 1 aliases
// DOM Level 1 aliases
/**
/**
* Same as {@link name}.
* Same as {@link name}.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
*/
*/
get: function () {
get: function () {
return this.name;
return this.name;
},
},
set: function (name) {
set: function (name) {
this.name = name;
this.name = name;
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
Object.defineProperty(Element.prototype, "attributes", {
Object.defineProperty(Element.prototype, "attributes", {
get: function () {
get: function () {
var _this = this;
var _this = this;
return Object.keys(this.attribs).map(function (name) {
return Object.keys(this.attribs).map(function (name) {
var _a, _b;
var _a, _b;
return ({
return ({
name: name,
name: name,
value: _this.attribs[name],
value: _this.attribs[name],
namespace: (_a = _this["x-attribsNamespace"]) === null || _a === void 0 ? void 0 : _a[name],
namespace: (_a = _this["x-attribsNamespace"]) === null || _a === void 0 ? void 0 : _a[name],
prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name],
prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name],
});
});
});
});
},
},
enumerable: false,
enumerable: false,
configurable: true
configurable: true
});
});
return Element;
return Element;
}(NodeWithChildren));
}(NodeWithChildren));
exports.Element = Element;
exports.Element = Element;
/**
/**
* @param node Node to check.
* @param node Node to check.
* @returns `true` if the node is a `Element`, `false` otherwise.
* @returns `true` if the node is a `Element`, `false` otherwise.
*/
*/
function isTag(node) {
function isTag(node) {
return (0, domelementtype_1.isTag)(node);
return (0, domelementtype_1.isTag)(node);
}
}
exports.isTag = isTag;
exports.isTag = isTag;
/**
/**
* @param node Node to check.
* @param node Node to check.
* @returns `true` if the node has the type `CDATA`, `false` otherwise.
* @returns `true` if the node has the type `CDATA`, `false` otherwise.
*/
*/
function isCDATA(node) {
function isCDATA(node) {
return node.type === domelementtype_1.ElementType.CDATA;
return node.type === domelementtype_1.ElementType.CDATA;
}
}
exports.isCDATA = isCDATA;
exports.isCDATA = isCDATA;
/**
/**
* @param node Node to check.
* @param node Node to check.
* @returns `true` if the node has the type `Text`, `false` otherwise.
* @returns `true` if the node has the type `Text`, `false` otherwise.
*/
*/
function isText(node) {
function isText(node) {
return node.type === domelementtype_1.ElementType.Text;
return node.type === domelementtype_1.ElementType.Text;
}
}
exports.isText = isText;
exports.isText = isText;
/**
/**
* @param node Node to check.
* @param node Node to check.
* @returns `true` if the node has the type `Comment`, `false` otherwise.
* @returns `true` if the node has the type `Comment`, `false` otherwise.
*/
*/
function isComment(node) {
function isComment(node) {
return node.type === domelementtype_1.ElementType.Comment;
return node.type === domelementtype_1.ElementType.Comment;
}
}
exports.isComment = isComment;
exports.isComment = isComment;
/**
/**
* @param node Node to check.
* @param node Node to check.
* @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
* @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
*/
*/
function isDirective(node) {
function isDirective(node) {
return node.type === domelementtype_1.ElementType.Directive;
return node.type === domelementtype_1.ElementType.Directive;
}
}
exports.isDirective = isDirective;
exports.isDirective = isDirective;
/**
/**
* @param node Node to check.
* @param node Node to check.
* @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
* @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
*/
*/
function isDocument(node) {
function isDocument(node) {
return node.type === domelementtype_1.ElementType.Root;
return node.type === domelementtype_1.ElementType.Root;
}
}
exports.isDocument = isDocument;
exports.isDocument = isDocument;
/**
/**
* @param node Node to check.
* @param node Node to check.
* @returns `true` if the node has children, `false` otherwise.
* @returns `true` if the node has children, `false` otherwise.
*/
*/
function hasChildren(node) {
function hasChildren(node) {
return Object.prototype.hasOwnProperty.call(node, "children");
return Object.prototype.hasOwnProperty.call(node, "children");
}
}
exports.hasChildren = hasChildren;
exports.hasChildren = hasChildren;
/**
/**
* Clone a node, and optionally its children.
* Clone a node, and optionally its children.
*
*
* @param recursive Clone child nodes as well.
* @param recursive Clone child nodes as well.
* @returns A clone of the node.
* @returns A clone of the node.
*/
*/
function cloneNode(node, recursive) {
function cloneNode(node, recursive) {
if (recursive === void 0) { recursive = false; }
if (recursive === void 0) { recursive = false; }
var result;
var result;
if (isText(node)) {
if (isText(node)) {
result = new Text(node.data);
result = new Text(node.data);
}
}
else if (isComment(node)) {
else if (isComment(node)) {
result = new Comment(node.data);
result = new Comment(node.data);
}
}
else if (isTag(node)) {
else if (isTag(node)) {
var children = recursive ? cloneChildren(node.children) : [];
var children = recursive ? cloneChildren(node.children) : [];
var clone_1 = new Element(node.name, __assign({}, node.attribs), children);
var clone_1 = new Element(node.name, __assign({}, node.attribs), children);
children.forEach(function (child) { return (child.parent = clone_1); });
children.forEach(function (child) { return (child.parent = clone_1); });
if (node.namespace != null) {
if (node.namespace != null) {
clone_1.namespace = node.namespace;
clone_1.namespace = node.namespace;
}
}
if (node["x-attribsNamespace"]) {
if (node["x-attribsNamespace"]) {
clone_1["x-attribsNamespace"] = __assign({}, node["x-attribsNamespace"]);
clone_1["x-attribsNamespace"] = __assign({}, node["x-attribsNamespace"]);
}
}
if (node["x-attribsPrefix"]) {
if (node["x-attribsPrefix"]) {
clone_1["x-attribsPrefix"] = __assign({}, node["x-attribsPrefix"]);
clone_1["x-attribsPrefix"] = __assign({}, node["x-attribsPrefix"]);
}
}
result = clone_1;
result = clone_1;
}
}
else if (isCDATA(node)) {
else if (isCDATA(node)) {
var children = recursive ? cloneChildren(node.children) : [];
var children = recursive ? cloneChildren(node.children) : [];
var clone_2 = new CDATA(children);
var clone_2 = new CDATA(children);
children.forEach(function (child) { return (child.parent = clone_2); });
children.forEach(function (child) { return (child.parent = clone_2); });
result = clone_2;
result = clone_2;
}
}
else if (isDocument(node)) {
else if (isDocument(node)) {
var children = recursive ? cloneChildren(node.children) : [];
var children = recursive ? cloneChildren(node.children) : [];
var clone_3 = new Document(children);
var clone_3 = new Document(children);
children.forEach(function (child) { return (child.parent = clone_3); });
children.forEach(function (child) { return (child.parent = clone_3); });
if (node["x-mode"]) {
if (node["x-mode"]) {
clone_3["x-mode"] = node["x-mode"];
clone_3["x-mode"] = node["x-mode"];
}
}
result = clone_3;
result = clone_3;
}
}
else if (isDirective(node)) {
else if (isDirective(node)) {
var instruction = new ProcessingInstruction(node.name, node.data);
var instruction = new ProcessingInstruction(node.name, node.data);
if (node["x-name"] != null) {
if (node["x-name"] != null) {
instruction["x-name"] = node["x-name"];
instruction["x-name"] = node["x-name"];
instruction["x-publicId"] = node["x-publicId"];
instruction["x-publicId"] = node["x-publicId"];
instruction["x-systemId"] = node["x-systemId"];
instruction["x-systemId"] = node["x-systemId"];
}
}
result = instruction;
result = instruction;
}
}
else {
else {
throw new Error("Not implemented yet: ".concat(node.type));
throw new Error("Not implemented yet: ".concat(node.type));
}
}
result.startIndex = node.startIndex;
result.startIndex = node.startIndex;
result.endIndex = node.endIndex;
result.endIndex = node.endIndex;
if (node.sourceCodeLocation != null) {
if (node.sourceCodeLocation != null) {
result.sourceCodeLocation = node.sourceCodeLocation;
result.sourceCodeLocation = node.sourceCodeLocation;
}
}
return result;
return result;
}
}
exports.cloneNode = cloneNode;
exports.cloneNode = cloneNode;
function cloneChildren(childs) {
function cloneChildren(childs) {
var children = childs.map(function (child) { return cloneNode(child, true); });
var children = childs.map(function (child) { return cloneNode(child, true); });
for (var i = 1; i < children.length; i++) {
for (var i = 1; i < children.length; i++) {
children[i].prev = children[i - 1];
children[i].prev = children[i - 1];
children[i - 1].next = children[i];
children[i - 1].next = children[i];
}
}
return children;
return children;
}
}
已保存差异
原始文本
打开文件
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.CDATA = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0; var domelementtype_1 = require("domelementtype"); /** * This object will be used as the prototype for Nodes when creating a * DOM-Level-1-compliant structure. */ var Node = /** @class */ (function () { function Node() { /** Parent of the node */ this.parent = null; /** Previous sibling */ this.prev = null; /** Next sibling */ this.next = null; /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */ this.startIndex = null; /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */ this.endIndex = null; } Object.defineProperty(Node.prototype, "parentNode", { // Read-write aliases for properties /** * Same as {@link parent}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function () { return this.parent; }, set: function (parent) { this.parent = parent; }, enumerable: false, configurable: true }); Object.defineProperty(Node.prototype, "previousSibling", { /** * Same as {@link prev}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function () { return this.prev; }, set: function (prev) { this.prev = prev; }, enumerable: false, configurable: true }); Object.defineProperty(Node.prototype, "nextSibling", { /** * Same as {@link next}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function () { return this.next; }, set: function (next) { this.next = next; }, enumerable: false, configurable: true }); /** * Clone this node, and optionally its children. * * @param recursive Clone child nodes as well. * @returns A clone of the node. */ Node.prototype.cloneNode = function (recursive) { if (recursive === void 0) { recursive = false; } return cloneNode(this, recursive); }; return Node; }()); exports.Node = Node; /** * A node that contains some data. */ var DataNode = /** @class */ (function (_super) { __extends(DataNode, _super); /** * @param data The content of the data node */ function DataNode(data) { var _this = _super.call(this) || this; _this.data = data; return _this; } Object.defineProperty(DataNode.prototype, "nodeValue", { /** * Same as {@link data}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function () { return this.data; }, set: function (data) { this.data = data; }, enumerable: false, configurable: true }); return DataNode; }(Node)); exports.DataNode = DataNode; /** * Text within the document. */ var Text = /** @class */ (function (_super) { __extends(Text, _super); function Text() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = domelementtype_1.ElementType.Text; return _this; } Object.defineProperty(Text.prototype, "nodeType", { get: function () { return 3; }, enumerable: false, configurable: true }); return Text; }(DataNode)); exports.Text = Text; /** * Comments within the document. */ var Comment = /** @class */ (function (_super) { __extends(Comment, _super); function Comment() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = domelementtype_1.ElementType.Comment; return _this; } Object.defineProperty(Comment.prototype, "nodeType", { get: function () { return 8; }, enumerable: false, configurable: true }); return Comment; }(DataNode)); exports.Comment = Comment; /** * Processing instructions, including doc types. */ var ProcessingInstruction = /** @class */ (function (_super) { __extends(ProcessingInstruction, _super); function ProcessingInstruction(name, data) { var _this = _super.call(this, data) || this; _this.name = name; _this.type = domelementtype_1.ElementType.Directive; return _this; } Object.defineProperty(ProcessingInstruction.prototype, "nodeType", { get: function () { return 1; }, enumerable: false, configurable: true }); return ProcessingInstruction; }(DataNode)); exports.ProcessingInstruction = ProcessingInstruction; /** * A `Node` that can have children. */ var NodeWithChildren = /** @class */ (function (_super) { __extends(NodeWithChildren, _super); /** * @param children Children of the node. Only certain node types can have children. */ function NodeWithChildren(children) { var _this = _super.call(this) || this; _this.children = children; return _this; } Object.defineProperty(NodeWithChildren.prototype, "firstChild", { // Aliases /** First child of the node. */ get: function () { var _a; return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null; }, enumerable: false, configurable: true }); Object.defineProperty(NodeWithChildren.prototype, "lastChild", { /** Last child of the node. */ get: function () { return this.children.length > 0 ? this.children[this.children.length - 1] : null; }, enumerable: false, configurable: true }); Object.defineProperty(NodeWithChildren.prototype, "childNodes", { /** * Same as {@link children}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function () { return this.children; }, set: function (children) { this.children = children; }, enumerable: false, configurable: true }); return NodeWithChildren; }(Node)); exports.NodeWithChildren = NodeWithChildren; var CDATA = /** @class */ (function (_super) { __extends(CDATA, _super); function CDATA() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = domelementtype_1.ElementType.CDATA; return _this; } Object.defineProperty(CDATA.prototype, "nodeType", { get: function () { return 4; }, enumerable: false, configurable: true }); return CDATA; }(NodeWithChildren)); exports.CDATA = CDATA; /** * The root node of the document. */ var Document = /** @class */ (function (_super) { __extends(Document, _super); function Document() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = domelementtype_1.ElementType.Root; return _this; } Object.defineProperty(Document.prototype, "nodeType", { get: function () { return 9; }, enumerable: false, configurable: true }); return Document; }(NodeWithChildren)); exports.Document = Document; /** * An element within the DOM. */ var Element = /** @class */ (function (_super) { __extends(Element, _super); /** * @param name Name of the tag, eg. `div`, `span`. * @param attribs Object mapping attribute names to attribute values. * @param children Children of the node. */ function Element(name, attribs, children, type) { if (children === void 0) { children = []; } if (type === void 0) { type = name === "script" ? domelementtype_1.ElementType.Script : name === "style" ? domelementtype_1.ElementType.Style : domelementtype_1.ElementType.Tag; } var _this = _super.call(this, children) || this; _this.name = name; _this.attribs = attribs; _this.type = type; return _this; } Object.defineProperty(Element.prototype, "nodeType", { get: function () { return 1; }, enumerable: false, configurable: true }); Object.defineProperty(Element.prototype, "tagName", { // DOM Level 1 aliases /** * Same as {@link name}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function () { return this.name; }, set: function (name) { this.name = name; }, enumerable: false, configurable: true }); Object.defineProperty(Element.prototype, "attributes", { get: function () { var _this = this; return Object.keys(this.attribs).map(function (name) { var _a, _b; return ({ name: name, value: _this.attribs[name], namespace: (_a = _this["x-attribsNamespace"]) === null || _a === void 0 ? void 0 : _a[name], prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name], }); }); }, enumerable: false, configurable: true }); return Element; }(NodeWithChildren)); exports.Element = Element; /** * @param node Node to check. * @returns `true` if the node is a `Element`, `false` otherwise. */ function isTag(node) { return (0, domelementtype_1.isTag)(node); } exports.isTag = isTag; /** * @param node Node to check. * @returns `true` if the node has the type `CDATA`, `false` otherwise. */ function isCDATA(node) { return node.type === domelementtype_1.ElementType.CDATA; } exports.isCDATA = isCDATA; /** * @param node Node to check. * @returns `true` if the node has the type `Text`, `false` otherwise. */ function isText(node) { return node.type === domelementtype_1.ElementType.Text; } exports.isText = isText; /** * @param node Node to check. * @returns `true` if the node has the type `Comment`, `false` otherwise. */ function isComment(node) { return node.type === domelementtype_1.ElementType.Comment; } exports.isComment = isComment; /** * @param node Node to check. * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise. */ function isDirective(node) { return node.type === domelementtype_1.ElementType.Directive; } exports.isDirective = isDirective; /** * @param node Node to check. * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise. */ function isDocument(node) { return node.type === domelementtype_1.ElementType.Root; } exports.isDocument = isDocument; /** * @param node Node to check. * @returns `true` if the node has children, `false` otherwise. */ function hasChildren(node) { return Object.prototype.hasOwnProperty.call(node, "children"); } exports.hasChildren = hasChildren; /** * Clone a node, and optionally its children. * * @param recursive Clone child nodes as well. * @returns A clone of the node. */ function cloneNode(node, recursive) { if (recursive === void 0) { recursive = false; } var result; if (isText(node)) { result = new Text(node.data); } else if (isComment(node)) { result = new Comment(node.data); } else if (isTag(node)) { var children = recursive ? cloneChildren(node.children) : []; var clone_1 = new Element(node.name, __assign({}, node.attribs), children); children.forEach(function (child) { return (child.parent = clone_1); }); if (node.namespace != null) { clone_1.namespace = node.namespace; } if (node["x-attribsNamespace"]) { clone_1["x-attribsNamespace"] = __assign({}, node["x-attribsNamespace"]); } if (node["x-attribsPrefix"]) { clone_1["x-attribsPrefix"] = __assign({}, node["x-attribsPrefix"]); } result = clone_1; } else if (isCDATA(node)) { var children = recursive ? cloneChildren(node.children) : []; var clone_2 = new CDATA(children); children.forEach(function (child) { return (child.parent = clone_2); }); result = clone_2; } else if (isDocument(node)) { var children = recursive ? cloneChildren(node.children) : []; var clone_3 = new Document(children); children.forEach(function (child) { return (child.parent = clone_3); }); if (node["x-mode"]) { clone_3["x-mode"] = node["x-mode"]; } result = clone_3; } else if (isDirective(node)) { var instruction = new ProcessingInstruction(node.name, node.data); if (node["x-name"] != null) { instruction["x-name"] = node["x-name"]; instruction["x-publicId"] = node["x-publicId"]; instruction["x-systemId"] = node["x-systemId"]; } result = instruction; } else { throw new Error("Not implemented yet: ".concat(node.type)); } result.startIndex = node.startIndex; result.endIndex = node.endIndex; if (node.sourceCodeLocation != null) { result.sourceCodeLocation = node.sourceCodeLocation; } return result; } exports.cloneNode = cloneNode; function cloneChildren(childs) { var children = childs.map(function (child) { return cloneNode(child, true); }); for (var i = 1; i < children.length; i++) { children[i].prev = children[i - 1]; children[i - 1].next = children[i]; } return children; }
更改后文本
打开文件
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.CDATA = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0; var domelementtype_1 = require("domelementtype"); /** * This object will be used as the prototype for Nodes when creating a * DOM-Level-1-compliant structure. */ var Node = /** @class */ (function () { function Node() { /** Parent of the node */ this.parent = null; /** Previous sibling */ this.prev = null; /** Next sibling */ this.next = null; /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */ this.startIndex = null; /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */ this.endIndex = null; } Object.defineProperty(Node.prototype, "parentNode", { // Read-write aliases for properties /** * Same as {@link parent}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function () { return this.parent; }, set: function (parent) { this.parent = parent; }, enumerable: false, configurable: true }); Object.defineProperty(Node.prototype, "previousSibling", { /** * Same as {@link prev}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function () { return this.prev; }, set: function (prev) { this.prev = prev; }, enumerable: false, configurable: true }); Object.defineProperty(Node.prototype, "nextSibling", { /** * Same as {@link next}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function () { return this.next; }, set: function (next) { this.next = next; }, enumerable: false, configurable: true }); /** * Clone this node, and optionally its children. * * @param recursive Clone child nodes as well. * @returns A clone of the node. */ Node.prototype.cloneNode = function (recursive) { if (recursive === void 0) { recursive = false; } return cloneNode(this, recursive); }; return Node; }()); exports.Node = Node; /** * A node that contains some data. */ var DataNode = /** @class */ (function (_super) { __extends(DataNode, _super); /** * @param data The content of the data node */ function DataNode(data) { var _this = _super.call(this) || this; _this.data = data; return _this; } Object.defineProperty(DataNode.prototype, "nodeValue", { /** * Same as {@link data}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function () { return this.data; }, set: function (data) { this.data = data; }, enumerable: false, configurable: true }); return DataNode; }(Node)); exports.DataNode = DataNode; /** * Text within the document. */ var Text = /** @class */ (function (_super) { __extends(Text, _super); function Text() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = domelementtype_1.ElementType.Text; return _this; } Object.defineProperty(Text.prototype, "nodeType", { get: function () { return 3; }, enumerable: false, configurable: true }); return Text; }(DataNode)); exports.Text = Text; /** * Comments within the document. */ var Comment = /** @class */ (function (_super) { __extends(Comment, _super); function Comment() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = domelementtype_1.ElementType.Comment; return _this; } Object.defineProperty(Comment.prototype, "nodeType", { get: function () { return 8; }, enumerable: false, configurable: true }); return Comment; }(DataNode)); exports.Comment = Comment; /** * Processing instructions, including doc types. */ var ProcessingInstruction = /** @class */ (function (_super) { __extends(ProcessingInstruction, _super); function ProcessingInstruction(name, data) { var _this = _super.call(this, data) || this; _this.name = name; _this.type = domelementtype_1.ElementType.Directive; return _this; } Object.defineProperty(ProcessingInstruction.prototype, "nodeType", { get: function () { return 1; }, enumerable: false, configurable: true }); return ProcessingInstruction; }(DataNode)); exports.ProcessingInstruction = ProcessingInstruction; /** * A `Node` that can have children. */ var NodeWithChildren = /** @class */ (function (_super) { __extends(NodeWithChildren, _super); /** * @param children Children of the node. Only certain node types can have children. */ function NodeWithChildren(children) { var _this = _super.call(this) || this; _this.children = children; return _this; } Object.defineProperty(NodeWithChildren.prototype, "firstChild", { // Aliases /** First child of the node. */ get: function () { var _a; return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null; }, enumerable: false, configurable: true }); Object.defineProperty(NodeWithChildren.prototype, "lastChild", { /** Last child of the node. */ get: function () { return this.children.length > 0 ? this.children[this.children.length - 1] : null; }, enumerable: false, configurable: true }); Object.defineProperty(NodeWithChildren.prototype, "childNodes", { /** * Same as {@link children}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function () { return this.children; }, set: function (children) { this.children = children; }, enumerable: false, configurable: true }); return NodeWithChildren; }(Node)); exports.NodeWithChildren = NodeWithChildren; var CDATA = /** @class */ (function (_super) { __extends(CDATA, _super); function CDATA() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = domelementtype_1.ElementType.CDATA; return _this; } Object.defineProperty(CDATA.prototype, "nodeType", { get: function () { return 4; }, enumerable: false, configurable: true }); return CDATA; }(NodeWithChildren)); exports.CDATA = CDATA; /** * The root node of the document. */ var Document = /** @class */ (function (_super) { __extends(Document, _super); function Document() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = domelementtype_1.ElementType.Root; return _this; } Object.defineProperty(Document.prototype, "nodeType", { get: function () { return 9; }, enumerable: false, configurable: true }); return Document; }(NodeWithChildren)); exports.Document = Document; /** * An element within the DOM. */ var Element = /** @class */ (function (_super) { __extends(Element, _super); /** * @param name Name of the tag, eg. `div`, `span`. * @param attribs Object mapping attribute names to attribute values. * @param children Children of the node. */ function Element(name, attribs, children, type) { if (children === void 0) { children = []; } if (type === void 0) { type = name === "script" ? domelementtype_1.ElementType.Script : name === "style" ? domelementtype_1.ElementType.Style : domelementtype_1.ElementType.Tag; } var _this = _super.call(this, children) || this; _this.name = name; _this.attribs = attribs; _this.type = type; return _this; } Object.defineProperty(Element.prototype, "nodeType", { get: function () { return 1; }, enumerable: false, configurable: true }); Object.defineProperty(Element.prototype, "tagName", { // DOM Level 1 aliases /** * Same as {@link name}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function () { return this.name; }, set: function (name) { this.name = name; }, enumerable: false, configurable: true }); Object.defineProperty(Element.prototype, "attributes", { get: function () { var _this = this; return Object.keys(this.attribs).map(function (name) { var _a, _b; return ({ name: name, value: _this.attribs[name], namespace: (_a = _this["x-attribsNamespace"]) === null || _a === void 0 ? void 0 : _a[name], prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name], }); }); }, enumerable: false, configurable: true }); return Element; }(NodeWithChildren)); exports.Element = Element; /** * @param node Node to check. * @returns `true` if the node is a `Element`, `false` otherwise. */ function isTag(node) { return (0, domelementtype_1.isTag)(node); } exports.isTag = isTag; /** * @param node Node to check. * @returns `true` if the node has the type `CDATA`, `false` otherwise. */ function isCDATA(node) { return node.type === domelementtype_1.ElementType.CDATA; } exports.isCDATA = isCDATA; /** * @param node Node to check. * @returns `true` if the node has the type `Text`, `false` otherwise. */ function isText(node) { return node.type === domelementtype_1.ElementType.Text; } exports.isText = isText; /** * @param node Node to check. * @returns `true` if the node has the type `Comment`, `false` otherwise. */ function isComment(node) { return node.type === domelementtype_1.ElementType.Comment; } exports.isComment = isComment; /** * @param node Node to check. * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise. */ function isDirective(node) { return node.type === domelementtype_1.ElementType.Directive; } exports.isDirective = isDirective; /** * @param node Node to check. * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise. */ function isDocument(node) { return node.type === domelementtype_1.ElementType.Root; } exports.isDocument = isDocument; /** * @param node Node to check. * @returns `true` if the node has children, `false` otherwise. */ function hasChildren(node) { return Object.prototype.hasOwnProperty.call(node, "children"); } exports.hasChildren = hasChildren; /** * Clone a node, and optionally its children. * * @param recursive Clone child nodes as well. * @returns A clone of the node. */ function cloneNode(node, recursive) { if (recursive === void 0) { recursive = false; } var result; if (isText(node)) { result = new Text(node.data); } else if (isComment(node)) { result = new Comment(node.data); } else if (isTag(node)) { var children = recursive ? cloneChildren(node.children) : []; var clone_1 = new Element(node.name, __assign({}, node.attribs), children); children.forEach(function (child) { return (child.parent = clone_1); }); if (node.namespace != null) { clone_1.namespace = node.namespace; } if (node["x-attribsNamespace"]) { clone_1["x-attribsNamespace"] = __assign({}, node["x-attribsNamespace"]); } if (node["x-attribsPrefix"]) { clone_1["x-attribsPrefix"] = __assign({}, node["x-attribsPrefix"]); } result = clone_1; } else if (isCDATA(node)) { var children = recursive ? cloneChildren(node.children) : []; var clone_2 = new CDATA(children); children.forEach(function (child) { return (child.parent = clone_2); }); result = clone_2; } else if (isDocument(node)) { var children = recursive ? cloneChildren(node.children) : []; var clone_3 = new Document(children); children.forEach(function (child) { return (child.parent = clone_3); }); if (node["x-mode"]) { clone_3["x-mode"] = node["x-mode"]; } result = clone_3; } else if (isDirective(node)) { var instruction = new ProcessingInstruction(node.name, node.data); if (node["x-name"] != null) { instruction["x-name"] = node["x-name"]; instruction["x-publicId"] = node["x-publicId"]; instruction["x-systemId"] = node["x-systemId"]; } result = instruction; } else { throw new Error("Not implemented yet: ".concat(node.type)); } result.startIndex = node.startIndex; result.endIndex = node.endIndex; if (node.sourceCodeLocation != null) { result.sourceCodeLocation = node.sourceCodeLocation; } return result; } exports.cloneNode = cloneNode; function cloneChildren(childs) { var children = childs.map(function (child) { return cloneNode(child, true); }); for (var i = 1; i < children.length; i++) { children[i].prev = children[i - 1]; children[i - 1].next = children[i]; } return children; }
查找差异