aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-08-29 16:10:23 +0100
committerMichael Williamson <mike@zwobble.org>2016-08-29 16:10:23 +0100
commit1a39bb268c68bc2c2452263ca539297d9905de8c (patch)
tree940a92f686399766a826db95c637a7d259fcb7ea /src/main/java/org/zwobble/couscous/ast
parent1d80de2bb51d053bf072c991e5c8788a3e64403b (diff)
Apply node transformers across lists of types
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java b/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java
index b75106a..835843d 100644
--- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java
+++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java
@@ -19,6 +19,17 @@ import static org.zwobble.couscous.util.ExtraIterables.only;
import static org.zwobble.couscous.util.ExtraLists.*;
public class NodeTransformer {
+ public static List<TypeNode> applyAll(List<NodeTransformer> transformers, List<TypeNode> types) {
+ for (NodeTransformer transformer : transformers) {
+ types = apply(transformer, types);
+ }
+ return types;
+ }
+
+ public static List<TypeNode> apply(NodeTransformer transformer, List<TypeNode> types) {
+ return eagerMap(types, transformer::transformTypeDeclaration);
+ }
+
public static NodeTransformer replaceExpressions(Map<ExpressionNode, ExpressionNode> replacements) {
return builder().
transformExpression(expression ->