diff options
| author | Adam Mathes <adam@adammathes.com> | 2026-02-13 21:34:48 -0800 |
|---|---|---|
| committer | Adam Mathes <adam@adammathes.com> | 2026-02-13 21:34:48 -0800 |
| commit | 76cb9c2a39d477a64824a985ade40507e3bbade1 (patch) | |
| tree | 41e997aa9c6f538d3a136af61dae9424db2005a9 /vanilla/node_modules/symbol-tree/lib/TreeIterator.js | |
| parent | 819a39a21ac992b1393244a4c283bbb125208c69 (diff) | |
| download | neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.gz neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.bz2 neko-76cb9c2a39d477a64824a985ade40507e3bbade1.zip | |
feat(vanilla): add testing infrastructure and tests (NK-wjnczv)
Diffstat (limited to 'vanilla/node_modules/symbol-tree/lib/TreeIterator.js')
| -rw-r--r-- | vanilla/node_modules/symbol-tree/lib/TreeIterator.js | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/vanilla/node_modules/symbol-tree/lib/TreeIterator.js b/vanilla/node_modules/symbol-tree/lib/TreeIterator.js new file mode 100644 index 0000000..f9d6217 --- /dev/null +++ b/vanilla/node_modules/symbol-tree/lib/TreeIterator.js @@ -0,0 +1,69 @@ +'use strict'; + +const TREE = Symbol(); +const ROOT = Symbol(); +const NEXT = Symbol(); +const ITERATE_FUNC = Symbol(); + +class TreeIterator { + constructor(tree, root, firstResult, iterateFunction) { + this[TREE] = tree; + this[ROOT] = root; + this[NEXT] = firstResult; + this[ITERATE_FUNC] = iterateFunction; + } + + next() { + const tree = this[TREE]; + const iterateFunc = this[ITERATE_FUNC]; + const root = this[ROOT]; + + if (!this[NEXT]) { + return { + done: true, + value: root, + }; + } + + const value = this[NEXT]; + + if (iterateFunc === 1) { + this[NEXT] = tree._node(value).previousSibling; + } + else if (iterateFunc === 2) { + this[NEXT] = tree._node(value).nextSibling; + } + else if (iterateFunc === 3) { + this[NEXT] = tree._node(value).parent; + } + else if (iterateFunc === 4) { + this[NEXT] = tree.preceding(value, {root: root}); + } + else /* if (iterateFunc === 5)*/ { + this[NEXT] = tree.following(value, {root: root}); + } + + return { + done: false, + value: value, + }; + } +} + +Object.defineProperty(TreeIterator.prototype, Symbol.iterator, { + value: function() { + return this; + }, + writable: false, +}); + +TreeIterator.PREV = 1; +TreeIterator.NEXT = 2; +TreeIterator.PARENT = 3; +TreeIterator.PRECEDING = 4; +TreeIterator.FOLLOWING = 5; + +Object.freeze(TreeIterator); +Object.freeze(TreeIterator.prototype); + +module.exports = TreeIterator; |
