From 7c12fd8fe169944152ca73f0da4e8fe8e280f648 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Mon, 18 Apr 2016 08:38:24 -0400 Subject: Added new option to top-down travers --- .../src/main/java/bjc/utils/funcdata/Tree.java | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java') diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java index 03a1f93..cd43df7 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java +++ b/BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java @@ -60,7 +60,15 @@ public class Tree implements ITree { } } - private Tree(ContainedType leafToken, + /** + * Create a new tree node with the specified children + * + * @param leafToken + * The data to hold in this node + * @param childrn + * A list of children for this node + */ + public Tree(ContainedType leafToken, IFunctionalList> childrn) { data = leafToken; @@ -286,6 +294,17 @@ public class Tree implements ITree { return this; case TRANSFORM: return transformer.apply(this); + case PUSHDOWN: + result = new Tree<>(data); + + if (hasChildren) { + children.forEach((child) -> { + result.addChild(child.topDownTransform( + transformPicker, transformer)); + }); + } + + return transformer.apply(result); default: throw new IllegalArgumentException( "Recieved unknown transform result " -- cgit v1.2.3