UNPKG

ltx

Version:

<xml for="JavaScript">

53 lines (46 loc) 1.33 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function nameEqual(a, b) { return a.name === b.name; } function attrsEqual(a, b) { const { attrs } = a; const keys = Object.keys(attrs); const { length } = keys; if (length !== Object.keys(b.attrs).length) return false; for (let i = 0, l = length; i < l; i++) { const key = keys[i]; const value = attrs[key]; // === null || undefined if (value == null || b.attrs[key] == null) { if (value !== b.attrs[key]) return false; } else if (value.toString() !== b.attrs[key].toString()) { return false; } } return true; } function childrenEqual(a, b) { const { children } = a; const { length } = children; if (length !== b.children.length) return false; for (let i = 0, l = length; i < l; i++) { const child = children[i]; if (typeof child === "string") { if (child !== b.children[i]) return false; } else { if (!equal(child, b.children[i])) return false; } } return true; } function equal(a, b) { if (!nameEqual(a, b)) return false; if (!attrsEqual(a, b)) return false; if (!childrenEqual(a, b)) return false; return true; } exports.attrsEqual = attrsEqual; exports.childrenEqual = childrenEqual; exports.default = equal; exports.nameEqual = nameEqual;