From 051bb1f543a6b609c5bc5dfdddbf0698b0994778 Mon Sep 17 00:00:00 2001 From: bendtherules Date: Fri, 20 Sep 2019 11:26:33 +0530 Subject: [PATCH] traverseGenerator - Add skipSelfForStartNode start param to skip startNode (default:false) Default false to keep current testcases running --- src/traverse.ts | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/traverse.ts b/src/traverse.ts index c6b7f47..6b4fa20 100644 --- a/src/traverse.ts +++ b/src/traverse.ts @@ -4,6 +4,7 @@ import { FiberNode } from "./mocked-types"; interface TTraverseConfig { order?: Array<"self" | "child" | "sibling">; skipSiblingForStartNode?: boolean; + skipSelfForStartNode?: boolean; } /** @@ -69,19 +70,23 @@ function* traverseGenerator( node: FiberNode, { order = ["self", "child", "sibling"], - skipSiblingForStartNode = true + skipSiblingForStartNode = true, + skipSelfForStartNode = false }: TTraverseConfig = {} ): IterableIterator { let skipChild = false, - skipSibling = skipSiblingForStartNode; + skipSibling = skipSiblingForStartNode, + skipSelf = skipSelfForStartNode; function* traverseSelf() { - const controlInput: - | { skipChild?: boolean; skipSibling?: boolean } - | undefined = yield node; + if (!skipSelf) { + const controlInput: + | { skipChild?: boolean; skipSibling?: boolean } + | undefined = yield node; - if (controlInput !== undefined) { - ({ skipChild = skipChild, skipSibling = skipSibling } = controlInput); + if (controlInput !== undefined) { + ({ skipChild = skipChild, skipSibling = skipSibling } = controlInput); + } } } @@ -90,7 +95,8 @@ function* traverseGenerator( const nextNode = node.child; yield* traverseGenerator(nextNode, { order, - skipSiblingForStartNode: false + skipSiblingForStartNode: false, + skipSelfForStartNode: false }); } } @@ -100,7 +106,8 @@ function* traverseGenerator( const nextNode = node.sibling; yield* traverseGenerator(nextNode, { order, - skipSiblingForStartNode: false + skipSiblingForStartNode: false, + skipSelfForStartNode: false }); } }