diff --git a/src/bbdocument/treewalker.js b/src/bbdocument/treewalker.js index 7902034..04cf171 100644 --- a/src/bbdocument/treewalker.js +++ b/src/bbdocument/treewalker.js @@ -39,7 +39,9 @@ class TreeWalker { if(previousNode !== this._rootNode) { this._path.push(previousNode) } - } else if(this.currentNode.nextSibling !== null && !this._path.includes(this.currentNode.nextSibling)) { + } else if(this.currentNode.nextSibling !== null && + (this._rootBookmark === this.currentNode.parentNode || this._path.includes(this.currentNode.parentNode)) && + !this._path.includes(this.currentNode.nextSibling)) { this._path.push(this.currentNode.nextSibling) this._currentNode = this.currentNode.nextSibling } else { diff --git a/test/bbdocument/treewalker.test.js b/test/bbdocument/treewalker.test.js index 84084dd..3d11066 100644 --- a/test/bbdocument/treewalker.test.js +++ b/test/bbdocument/treewalker.test.js @@ -51,7 +51,6 @@ describe("treewalker", () => { assert.strictEqual(nodeList[13].textContent, "9") assert.strictEqual(nodeList[14].textContent, "Test") - }) it("nextNode_", () => { @@ -96,6 +95,20 @@ describe("treewalker", () => { }) + it("nextNode____", () => { + + const bbDocument = Parser.parse("[quote]1[quote][/quote][quote][/quote][/quote]") + + let treeWalker = new TreeWalker(bbDocument.documentElement.childNodes[0].childNodes[1]) + let nodeList = [] + while(treeWalker.nextNode()) { + nodeList.push(treeWalker.currentNode) + } + assert.strictEqual(nodeList.length, 0) + + + }) + it("nextNodeList", () => { const bbDocument = Parser.parse("[list][*]1[list][*]test[/list][*]2[*]3[*]4[/list]")