@Override public TokenWriter writeln() { this.listener.onTokenWriterWrite(TokenType.NEW_LINE, "\n", null, () -> delegate.writeln()); return this; }
public void writeComment(CtComment comment) { if (!env.isCommentsEnabled() || comment == null) { return; } prettyPrinter.scan(comment); printer.writeln(); }
@Override public TokenWriter writeln() { if (isMuted()) { //if new line is muted, then direct printer helper already wrote EOL and indentation getPrinterHelper().setShouldWriteTabs(false); return this; } delegate.writeln(); return this; } @Override
/** * Write the compilation unit header. */ public void writeHeader(List<CtType<?>> types, Collection<CtImport> imports) { if (!types.isEmpty()) { for (CtType<?> ctType : types) { writeComment(ctType, CommentOffset.TOP_FILE); } // writing the header package if (!types.get(0).getPackage().isUnnamedPackage()) { writePackageLine(types.get(0).getPackage().getQualifiedName()); } this.writeImports(imports); printer.writeln(); printer.writeln(); } }
public void writePackageLine(String packageQualifiedName) { printer.writeKeyword("package").writeSpace(); writeQualifiedName(packageQualifiedName).writeSeparator(";").writeln(); }
/** * Writes the annotations for the given element. */ public void writeAnnotations(CtElement element) { for (CtAnnotation<?> annotation : element.getAnnotations()) { // if element is a type reference and the parent is a typed element // which contains exactly the same annotation, then we are certainly in this case: // @myAnnotation String myField // in which case the annotation is attached to the type and the variable // in that case, we only print the annotation once. if (element.isParentInitialized() && element instanceof CtTypeReference && (element.getParent() instanceof CtTypedElement) && element.getParent().getAnnotations().contains(annotation)) { continue; } prettyPrinter.scan(annotation); printer.writeln(); } }
@Override public void visitCtUsedService(CtUsedService usedService) { printer.writeKeyword("uses").writeSpace(); scan(usedService.getServiceType()); printer.writeSeparator(";").writeln(); }
@Override public void visitCtModuleRequirement(CtModuleRequirement moduleRequirement) { printer.writeKeyword("requires").writeSpace(); if (!moduleRequirement.getRequiresModifiers().isEmpty()) { this.elementPrinterHelper.printList(moduleRequirement.getRequiresModifiers(), null, false, null, false, false, " ", false, false, " ", modifier -> printer.writeKeyword(modifier.name().toLowerCase())); } scan(moduleRequirement.getModuleReference()); printer.writeSeparator(";").writeln(); }
@Override public void visitCtPackage(CtPackage ctPackage) { if (!ctPackage.isUnnamedPackage()) { elementPrinterHelper.writePackageLine(ctPackage.getQualifiedName()); } else { printer.writeComment( ctPackage.getFactory().createComment("default package (CtPackage.TOP_LEVEL_PACKAGE_NAME in Spoon= unnamed package)", CommentType.INLINE) ).writeln(); } }
@Override public <T extends Enum<?>> void visitCtEnum(CtEnum<T> ctEnum) { visitCtType(ctEnum); printer.writeKeyword("enum").writeSpace().writeIdentifier(ctEnum.getSimpleName()); elementPrinterHelper.writeImplementsClause(ctEnum); context.pushCurrentThis(ctEnum); printer.writeSpace().writeSeparator("{").incTab().writeln(); if (ctEnum.getEnumValues().isEmpty()) { printer.writeSeparator(";").writeln(); } else { elementPrinterHelper.printList(ctEnum.getEnumValues(), null, false, null, false, false, ",", false, false, ";", enumValue -> { printer.writeln(); scan(enumValue); }); } elementPrinterHelper.writeElementList(ctEnum.getTypeMembers()); printer.decTab().writeSeparator("}"); context.popCurrentThis(); }
@Override public void visitCtProvidedService(CtProvidedService moduleProvidedService) { printer.writeKeyword("provides").writeSpace(); scan(moduleProvidedService.getServiceType()); this.elementPrinterHelper.printList(moduleProvidedService.getImplementationTypes(), null, false, " with", true, false, ",", true, false, null, implementations -> scan(implementations)); printer.writeSeparator(";").writeln(); }
/** write all non-implicit parts of a block, with special care for indentation */ public void writeIfOrLoopBlock(CtStatement block) { if (block != null) { if (!block.isImplicit() && (block instanceof CtBlock || block instanceof CtIf)) { printer.writeSpace(); } if (!(block instanceof CtBlock) && !(block instanceof CtIf)) { printer.incTab(); printer.writeln(); } writeStatement(block); if (!(block instanceof CtBlock) && !(block instanceof CtIf)) { printer.decTab().writeln(); } if (!block.isImplicit()) { if (!block.isParentInitialized() || (!(block.getParent() instanceof CtFor) && !(block.getParent() instanceof CtForEach) && !(block.getParent() instanceof CtIf))) { printer.writeSpace(); } } } else { printer.writeSeparator(";"); } } /**
@Override public void visitCtPackageExport(CtPackageExport moduleExport) { if (moduleExport.isOpenedPackage()) { printer.writeKeyword("opens"); } else { printer.writeKeyword("exports"); } printer.writeSpace(); visitCtPackageReference(moduleExport.getPackageReference()); if (!moduleExport.getTargetExport().isEmpty()) { this.elementPrinterHelper.printList(moduleExport.getTargetExport(), null, false, " to", true, false, ",", true, false, null, moduleReference -> scan(moduleReference)); } printer.writeSeparator(";").writeln(); }
@Override public <E> void visitCtSwitch(CtSwitch<E> switchStatement) { enterCtStatement(switchStatement); printer.writeKeyword("switch").writeSpace().writeSeparator("("); scan(switchStatement.getSelector()); printer.writeSeparator(")").writeSpace().writeSeparator("{").incTab(); for (CtCase<?> c : switchStatement.getCases()) { printer.writeln(); scan(c); } if (env.isPreserveLineNumbers()) { printer.decTab().writeSeparator("}"); } else { printer.decTab().writeln().writeSeparator("}"); } exitCtStatement(switchStatement); }
@Override public <R> void visitCtBlock(CtBlock<R> block) { enterCtStatement(block); if (!block.isImplicit()) { printer.writeSeparator("{"); } printer.incTab(); for (CtStatement statement : block.getStatements()) { if (!statement.isImplicit()) { printer.writeln(); elementPrinterHelper.writeStatement(statement); } } printer.decTab(); getPrinterHelper().adjustEndPosition(block); if (env.isPreserveLineNumbers()) { if (!block.isImplicit()) { printer.writeSeparator("}"); } } else { printer.writeln(); if (!block.isImplicit()) { printer.writeSeparator("}"); } } exitCtStatement(block); }
@Override public void visitCtModule(CtModule module) { enter(module); if (module.isOpenModule()) { printer.writeKeyword("open").writeSpace(); } printer.writeKeyword("module").writeSpace().writeIdentifier(module.getSimpleName()); printer.writeSpace().writeSeparator("{").incTab().writeln(); for (CtModuleDirective moduleDirective : module.getModuleDirectives()) { scan(moduleDirective); } printer.decTab().writeSeparator("}"); exit(module); }
printer.writeln(); elementPrinterHelper.writeStatement(statement);
printer.writeln();