Skip to content

Commit 83ec4d5

Browse files
committed
A more memory efficient AstPrinter
1 parent aef8032 commit 83ec4d5

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

src/main/java/graphql/language/AstPrinter.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,21 @@
2121
@SuppressWarnings("UnnecessaryLocalVariable")
2222
@PublicApi
2323
public class AstPrinter {
24+
25+
/**
26+
* @return an {@link AstPrinter} that is in full print mode
27+
*/
28+
static AstPrinter full() {
29+
return new AstPrinter(false);
30+
}
31+
32+
/**
33+
* @return an {@link AstPrinter} that is in compact print mode
34+
*/
35+
static AstPrinter compact() {
36+
return new AstPrinter(true);
37+
}
38+
2439
private final Map<Class<? extends Node>, NodePrinter<? extends Node>> printers = new LinkedHashMap<>();
2540

2641
private final boolean compactMode;
@@ -803,7 +818,7 @@ public static String printAstCompact(Node node) {
803818
}
804819

805820
private static void printImpl(StringBuilder writer, Node<?> node, boolean compactMode) {
806-
AstPrinter astPrinter = new AstPrinter(compactMode);
821+
AstPrinter astPrinter = compactMode ? compact() : full();
807822
NodePrinter<Node> printer = astPrinter._findPrinter(node);
808823
printer.print(writer, node);
809824
}

0 commit comments

Comments
 (0)