diff options
author | Danny van Bruggen <hexagonaal@gmail.com> | 2017-11-05 15:47:57 +0100 |
---|---|---|
committer | Danny van Bruggen <hexagonaal@gmail.com> | 2017-11-05 15:47:57 +0100 |
commit | f94885659b53f119b444a9783e842862f0905811 (patch) | |
tree | 7a4e1d9ea0801c885c3ae30921cdb362e0d45ab9 | |
parent | fd5fa4403ff701bd3997780f5ccc2efebbd028ae (diff) | |
download | javaparser-f94885659b53f119b444a9783e842862f0905811.tar.gz |
Do basic Javadoc formatting to get the indenting right.
3 files changed, 48 insertions, 3 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java b/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java index 3145c1d07..9427e5f41 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java +++ b/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java @@ -306,12 +306,25 @@ public class PrettyPrintVisitor implements VoidVisitor<Void> { printer.println("/**"); final String commentContent = normalizeEolInTextBlock(n.getContent(), configuration.getEndOfLineCharacter()); String[] lines = commentContent.split("\\R"); + boolean skippingLeadingEmptyLines = true; + boolean prependEmptyLine = false; for (String line : lines) { line = line.trim(); if (line.startsWith("*")) { line = line.substring(1).trim(); } - printer.println(" * " + line); + if (line.isEmpty()) { + if (!skippingLeadingEmptyLines) { + prependEmptyLine = true; + } + } else { + skippingLeadingEmptyLines = false; + if (prependEmptyLine) { + printer.println(" *"); + prependEmptyLine = false; + } + printer.println(" * " + line); + } } printer.println(" */"); } diff --git a/javaparser-testing/src/test/java/com/github/javaparser/printer/PrettyPrintVisitorTest.java b/javaparser-testing/src/test/java/com/github/javaparser/printer/PrettyPrintVisitorTest.java index ef2cc0dbf..032ce3dd3 100644 --- a/javaparser-testing/src/test/java/com/github/javaparser/printer/PrettyPrintVisitorTest.java +++ b/javaparser-testing/src/test/java/com/github/javaparser/printer/PrettyPrintVisitorTest.java @@ -192,6 +192,37 @@ public class PrettyPrintVisitorTest { } @Test + public void emptyJavadocGetsFormatted() { + CompilationUnit cu = new CompilationUnit(); + cu.addClass("X").addMethod("abc").setJavadocComment(""); + + assertEqualsNoEol("public class X {\n" + + "\n" + + " /**\n" + + " */\n" + + " void abc() {\n" + + " }\n" + + "}\n", cu.toString()); + } + + @Test + public void multilineJavadocWithLotsOfEmptyLinesGetsFormattedNeatly() { + CompilationUnit cu = new CompilationUnit(); + cu.addClass("X").addMethod("abc").setJavadocComment("\n\n\nab\n\n\ncd\n\n\n"); + + assertEqualsNoEol("public class X {\n" + + "\n" + + " /**\n" + + " * ab\n" + + " *\n" + + " * cd\n" + + " */\n" + + " void abc() {\n" + + " }\n" + + "}\n", cu.toString()); + } + + @Test public void singlelineJavadocGetsFormatted() { CompilationUnit cu = new CompilationUnit(); cu.addClass("X").addMethod("abc").setJavadocComment("line1"); diff --git a/javaparser-testing/src/test/resources/com/github/javaparser/bdd/pretty_printing_scenarios.story b/javaparser-testing/src/test/resources/com/github/javaparser/bdd/pretty_printing_scenarios.story index 50bbe1f50..c3bf46605 100644 --- a/javaparser-testing/src/test/resources/com/github/javaparser/bdd/pretty_printing_scenarios.story +++ b/javaparser-testing/src/test/resources/com/github/javaparser/bdd/pretty_printing_scenarios.story @@ -301,12 +301,13 @@ When the class is parsed by the Java parser Then it is printed as: public class Foo { - /** This line gets duplicated */ + /** + * This line gets duplicated + */ public void foo() { } } - Scenario: various lamba casts (issue 418) Given the class: public class TestLambda { |