diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-08-29 16:10:23 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-08-29 16:10:23 +0100 |
| commit | 1a39bb268c68bc2c2452263ca539297d9905de8c (patch) | |
| tree | 940a92f686399766a826db95c637a7d259fcb7ea /src/main/java/org/zwobble/couscous/ast | |
| parent | 1d80de2bb51d053bf072c991e5c8788a3e64403b (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.java | 11 |
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 -> |
