private void visitAll0(String relation, RawListAccessor<?, ?> nodes, String separator, String prefix, String suffix, boolean suppress) { if (nodes.isEmpty()) return; append(prefix); boolean first = true; for (Node n : nodes) { if (!first) { append(separator); } first = false; formatter.nameNextElement(relation); if (suppress) formatter.startSuppressBlock(); visit(n); if (suppress) formatter.endSuppressBlock(); } append(suffix); }
@Override public boolean visitVariableReference(VariableReference node) { parensOpen(node); formatter.buildInline(node); visit(node.astIdentifier()); formatter.closeInline(); parensClose(node); return true; }
@Override public boolean visitNullLiteral(NullLiteral node) { parensOpen(node); formatter.buildInline(node); formatter.keyword("null"); formatter.closeInline(); parensClose(node); return true; }
@Override public boolean visitArrayInitializer(ArrayInitializer node) { parensOpen(node); formatter.buildInline(node); formatter.append("{"); visitAll(node.rawExpressions(), ", ", "", ""); formatter.append("}"); formatter.closeInline(); parensClose(node); return true; }
@Override public boolean visitEnumConstant(EnumConstant node) { visit(node.rawJavadoc()); formatter.buildInline(node); visitAllSuppressed(node.rawAnnotations(), "\n", "", "\n"); formatter.nameNextElement("name"); visit(node.astName()); visitAll(node.rawArguments(), ", ", "(", ")"); if (node.rawBody() != null) { formatter.space(); formatter.startSuppressBlock(); visit(node.rawBody()); formatter.endSuppressBlock(); } formatter.closeInline(); return true; }
@Override public String toString() { TextFormatter formatter = new TextFormatter(); SourcePrinter printer = new SourcePrinter(formatter); accept(printer); return formatter.finish(); }
private void visitAllSuppressed(RawListAccessor<?, ?> nodes, String separator, String prefix, String suffix) { visitAll0(null, nodes, separator, prefix, suffix, true); }
@Override public boolean visitIdentifier(Identifier node) { String name = node.astValue(); if (name == null) name = FAIL + "NULL_IDENTIFIER" + FAIL; else if (name.isEmpty()) name = FAIL + "EMPTY_IDENTIFIER" + FAIL; else if (!isValidJavaIdentifier(name)) name = FAIL + "INVALID_IDENTIFIER: " + name + FAIL; formatter.buildInline(node); formatter.property("name", name); formatter.append(name); formatter.closeInline(); return true; }
@Override public boolean visitIntegralLiteral(IntegralLiteral node) { parensOpen(node); String raw = node.rawValue(); formatter.buildInline(node); formatter.property("value", raw); formatter.append(raw); formatter.closeInline(); parensClose(node); return true; }
@Override public boolean visitArrayInitializer(ArrayInitializer node) { parensOpen(node); formatter.buildInline(node); formatter.append("{"); visitAll(node.rawExpressions(), ", ", "", ""); formatter.append("}"); formatter.closeInline(); parensClose(node); return true; }
@Override public boolean visitEnumConstant(EnumConstant node) { visit(node.rawJavadoc()); formatter.buildInline(node); visitAllSuppressed(node.rawAnnotations(), "\n", "", "\n"); formatter.nameNextElement("name"); visit(node.astName()); visitAll(node.rawArguments(), ", ", "(", ")"); if (node.rawBody() != null) { formatter.space(); formatter.startSuppressBlock(); visit(node.rawBody()); formatter.endSuppressBlock(); } formatter.closeInline(); return true; }
@Override public String toString() { TextFormatter formatter = new TextFormatter(); SourcePrinter printer = new SourcePrinter(formatter); accept(printer); return formatter.finish(); }
private void visitAll(RawListAccessor<?, ?> nodes, String separator, String prefix, String suffix) { visitAll0(null, nodes, separator, prefix, suffix, false); }
@Override public boolean visitIdentifier(Identifier node) { String name = node.astValue(); if (name == null) name = FAIL + "NULL_IDENTIFIER" + FAIL; else if (name.isEmpty()) name = FAIL + "EMPTY_IDENTIFIER" + FAIL; else if (!isValidJavaIdentifier(name)) name = FAIL + "INVALID_IDENTIFIER: " + name + FAIL; formatter.buildInline(node); formatter.property("name", name); formatter.append(name); formatter.closeInline(); return true; }
@Override public boolean visitVariableReference(VariableReference node) { parensOpen(node); formatter.buildInline(node); visit(node.astIdentifier()); formatter.closeInline(); parensClose(node); return true; }