aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2017-11-05 15:47:57 +0100
committerDanny van Bruggen <hexagonaal@gmail.com>2017-11-05 15:47:57 +0100
commitf94885659b53f119b444a9783e842862f0905811 (patch)
tree7a4e1d9ea0801c885c3ae30921cdb362e0d45ab9
parentfd5fa4403ff701bd3997780f5ccc2efebbd028ae (diff)
downloadjavaparser-f94885659b53f119b444a9783e842862f0905811.tar.gz
Do basic Javadoc formatting to get the indenting right.
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java15
-rw-r--r--javaparser-testing/src/test/java/com/github/javaparser/printer/PrettyPrintVisitorTest.java31
-rw-r--r--javaparser-testing/src/test/resources/com/github/javaparser/bdd/pretty_printing_scenarios.story5
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 {