diff options
author | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 |
---|---|---|
committer | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 |
commit | 5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch) | |
tree | 360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/symbol-tree/lib/TreeIterator.js | |
parent | b500a50f1b97d93c98b36ed9a980f8188d648147 (diff) | |
download | LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip |
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/symbol-tree/lib/TreeIterator.js')
-rw-r--r-- | node_modules/symbol-tree/lib/TreeIterator.js | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/node_modules/symbol-tree/lib/TreeIterator.js b/node_modules/symbol-tree/lib/TreeIterator.js new file mode 100644 index 0000000..f9d6217 --- /dev/null +++ b/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; |