diff options
| author | Ben Culkin <scorpress@gmail.com> | 2023-06-25 15:09:13 -0400 |
|---|---|---|
| committer | Ben Culkin <scorpress@gmail.com> | 2023-06-25 15:09:13 -0400 |
| commit | 69a769bc6474d71f5108af0698dd5454319e2a6c (patch) | |
| tree | fca5e5772823c826fb206333c3ddf47338d15b82 /base/src/main/java/bjc/utils/funcutils/TreeUtils.java | |
| parent | c50f997a46cbd2c889a31750f9558847e80aac61 (diff) | |
Fix a few warnings
Diffstat (limited to 'base/src/main/java/bjc/utils/funcutils/TreeUtils.java')
| -rw-r--r-- | base/src/main/java/bjc/utils/funcutils/TreeUtils.java | 73 |
1 files changed, 37 insertions, 36 deletions
diff --git a/base/src/main/java/bjc/utils/funcutils/TreeUtils.java b/base/src/main/java/bjc/utils/funcutils/TreeUtils.java index daab8a1..22c4d3c 100644 --- a/base/src/main/java/bjc/utils/funcutils/TreeUtils.java +++ b/base/src/main/java/bjc/utils/funcutils/TreeUtils.java @@ -6,18 +6,22 @@ import java.util.function.*; import bjc.data.*; import bjc.funcdata.*; -/** Implements various utilities for trees. +/** + * Implements various utilities for trees. * - * @author Benjamin Culkin */ + * @author Benjamin Culkin + */ public class TreeUtils { - /** Convert a tree into a list of outline nodes that match a certain path. + /** + * Convert a tree into a list of outline nodes that match a certain path. * - * @param <T> The type contained in the tree. + * @param <T> The type contained in the tree. * - * @param tre The tree to outline. + * @param tre The tree to outline. * @param leafMarker The path to mark nodes with. * - * @return The list of marked paths. */ + * @return The list of marked paths. + */ public static <T> ListEx<ListEx<T>> outlineTree(Tree<T> tre, Predicate<T> leafMarker) { ListEx<ListEx<T>> paths = new FunctionalList<>(); @@ -30,13 +34,14 @@ public class TreeUtils { } /* Find a path in a tree. */ - private static <T> void findPath(Tree<T> subtree, LinkedList<T> path, - Predicate<T> leafMarker, ListEx<ListEx<T>> paths) { + private static <T> void findPath(Tree<T> subtree, LinkedList<T> path, Predicate<T> leafMarker, + ListEx<ListEx<T>> paths) { if (subtree.getChildrenCount() == 0 && leafMarker.test(subtree.getHead())) { /* We're at a matching leaf node. Add it. */ ListEx<T> finalPath = new FunctionalList<>(); - for (T ePath : path) finalPath.add(ePath); + for (T ePath : path) + finalPath.add(ePath); finalPath.add(subtree.getHead()); @@ -50,43 +55,39 @@ public class TreeUtils { path.removeLast(); } } - - /** Performs 'variable substitution' or something along those lines on a tree. + + /** + * Performs 'variable substitution' or something along those lines on a tree. * * @param <ContainedType> The type of element contained in the tree. * - * @param tree The tree to do expansion in. - * @param marker The function to mark which nodes should be expanded. - * @param expander The function to expand nodes. + * @param tree The tree to do expansion in. + * @param marker The function to mark which nodes should be expanded. + * @param expander The function to expand nodes. * - * @return A transformed copy of the tree. */ - public static <ContainedType> Tree<ContainedType> substitute( - Tree<ContainedType> tree, - Predicate<ContainedType> marker, - Function<ContainedType, Tree<ContainedType>> expander) { - tree.topDownTransform((contents) -> { - if (marker.test(contents)) return TopDownTransformResult.TRANSFORM; - else return TopDownTransformResult.PASSTHROUGH; - }, (node) -> { - return expander.apply(node.getHead()); - }); + * @return A transformed copy of the tree. + */ + public static <ContainedType> Tree<ContainedType> substitute(Tree<ContainedType> tree, + Predicate<ContainedType> marker, Function<ContainedType, Tree<ContainedType>> expander) { + Function<ContainedType, + TopDownTransformResult> picker = (contents) -> marker.test(contents) ? TopDownTransformResult.TRANSFORM + : TopDownTransformResult.PASSTHROUGH; + tree.topDownTransform(picker, (node) -> expander.apply(node.getHead())); return tree; } - - /** Performs 'variable substitution' or something along those lines on a tree. + + /** + * Performs 'variable substitution' or something along those lines on a tree. * * @param <ContainedType> The type of element contained in the tree. * - * @param tree The tree to do expansion in. - * @param environment A map which contains the variables to substitute. + * @param tree The tree to do expansion in. + * @param environment A map which contains the variables to substitute. * - * @return A transformed copy of the tree. */ - public static <ContainedType> Tree<ContainedType> substitute( - Tree<ContainedType> tree, + * @return A transformed copy of the tree. + */ + public static <ContainedType> Tree<ContainedType> substitute(Tree<ContainedType> tree, MapEx<ContainedType, Tree<ContainedType>> environment) { - return substitute( - tree, - environment::containsKey, - (element) -> environment.get(element).get()); + return substitute(tree, environment::containsKey, (element) -> environment.get(element).get()); } } |
