aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2018-01-29 20:53:04 +0100
committerDanny van Bruggen <hexagonaal@gmail.com>2018-01-29 20:53:04 +0100
commit1c2f5c6b653cc7dc72681cfd4b46eb5e33df01de (patch)
tree0c9b1a2444a277fc49cd5325038e1c02ac0276b0
parenta3d8a24c8c2becb0790b0c7cfca03171c39c2f4b (diff)
downloadplatform_external_javaparser-1c2f5c6b653cc7dc72681cfd4b46eb5e33df01de.tar.gz
platform_external_javaparser-1c2f5c6b653cc7dc72681cfd4b46eb5e33df01de.tar.bz2
platform_external_javaparser-1c2f5c6b653cc7dc72681cfd4b46eb5e33df01de.zip
Redo Javadoc formatting
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java10
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/javadoc/Javadoc.java17
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java17
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java13
-rw-r--r--javaparser-testing/src/test/java/com/github/javaparser/JavadocParserTest.java11
-rw-r--r--javaparser-testing/src/test/java/com/github/javaparser/printer/PrettyPrintVisitorTest.java8
-rw-r--r--javaparser-testing/src/test/java/com/github/javaparser/utils/UtilsTest.java11
7 files changed, 56 insertions, 31 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java b/javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java
index 94ff436fe..e942bb86d 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java
@@ -25,13 +25,13 @@ import com.github.javaparser.ast.comments.JavadocComment;
import com.github.javaparser.javadoc.Javadoc;
import com.github.javaparser.javadoc.JavadocBlockTag;
import com.github.javaparser.javadoc.description.JavadocDescription;
-import com.github.javaparser.utils.Utils;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
+import static com.github.javaparser.utils.Utils.*;
import static com.github.javaparser.utils.Utils.nextWord;
/**
@@ -67,13 +67,13 @@ class JavadocParser {
.stream()
.collect(Collectors.joining("\n"));
- //Split up the entire tag black again, considering now that some lines belong to the same block tag.
- //The pattern used splits the block at each new line starting with the '@' symbol, thus the symbol
+ //Split up the entire tag back again, considering now that some lines belong to the same block tag.
+ //The pattern splits the block at each new line starting with the '@' symbol, thus the symbol
//then needs to be added again so that the block parsers handles everything correctly.
blockLines = BLOCK_PATTERN
.splitAsStream(tagBlock)
- .filter(Utils.STRING_NOT_EMPTY)
- .map(s -> BLOCK_TAG_PREFIX + s.replace("\n", " ").trim())
+ .filter(STRING_NOT_EMPTY)
+ .map(s -> BLOCK_TAG_PREFIX + s)
.collect(Collectors.toList());
}
Javadoc document = new Javadoc(JavadocDescription.parseText(descriptionText));
diff --git a/javaparser-core/src/main/java/com/github/javaparser/javadoc/Javadoc.java b/javaparser-core/src/main/java/com/github/javaparser/javadoc/Javadoc.java
index 3239997cd..41ed01bdc 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/javadoc/Javadoc.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/javadoc/Javadoc.java
@@ -27,6 +27,8 @@ import com.github.javaparser.javadoc.description.JavadocDescription;
import java.util.LinkedList;
import java.util.List;
+import static com.github.javaparser.utils.Utils.*;
+
/**
* The structured content of a single Javadoc comment.
* <p>
@@ -66,14 +68,14 @@ public class Javadoc {
StringBuilder sb = new StringBuilder();
if (!description.isEmpty()) {
sb.append(description.toText());
- sb.append("\n");
+ sb.append(EOL);
}
if (!blockTags.isEmpty()) {
- sb.append("\n");
+ sb.append(EOL);
}
blockTags.forEach(bt -> {
sb.append(bt.toText());
- sb.append("\n");
+ sb.append(EOL);
});
return sb.toString();
}
@@ -88,13 +90,14 @@ public class Javadoc {
}
}
StringBuilder sb = new StringBuilder();
- sb.append("\n");
- if (!toText().isEmpty()) {
- for (String line : toText().split("\n")) {
+ sb.append(EOL);
+ final String text = toText();
+ if (!text.isEmpty()) {
+ for (String line : text.split(EOL)) {
sb.append(indentation);
sb.append(" * ");
sb.append(line);
- sb.append("\n");
+ sb.append(EOL);
}
}
sb.append(indentation);
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 b771c8eea..a7b7fa772 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
@@ -44,6 +44,7 @@ import static com.github.javaparser.ast.Node.Parsedness.UNPARSABLE;
import static com.github.javaparser.utils.PositionUtils.sortByBeginPosition;
import static com.github.javaparser.utils.Utils.isNullOrEmpty;
import static com.github.javaparser.utils.Utils.normalizeEolInTextBlock;
+import static com.github.javaparser.utils.Utils.trimTrailingSpaces;
/**
* Outputs the AST as formatted Java source code.
@@ -328,10 +329,11 @@ public class PrettyPrintVisitor implements VoidVisitor<Void> {
boolean skippingLeadingEmptyLines = true;
boolean prependEmptyLine = false;
for (String line : lines) {
- line = line.trim();
- if (line.startsWith("*")) {
- line = line.substring(1).trim();
+ final String trimmedLine = line.trim();
+ if (trimmedLine.startsWith("*")) {
+ line = trimmedLine.substring(1);
}
+ line = trimTrailingSpaces(line);
if (line.isEmpty()) {
if (!skippingLeadingEmptyLines) {
prependEmptyLine = true;
@@ -342,7 +344,7 @@ public class PrettyPrintVisitor implements VoidVisitor<Void> {
printer.println(" *");
prependEmptyLine = false;
}
- printer.println(" * " + line);
+ printer.println(" *" + line);
}
}
printer.println(" */");
@@ -484,7 +486,7 @@ public class PrettyPrintVisitor implements VoidVisitor<Void> {
if (!n.getVariables().isEmpty()) {
Optional<Type> maximumCommonType = n.getMaximumCommonType();
maximumCommonType.ifPresent(t -> t.accept(this, arg));
- if(!maximumCommonType.isPresent()){
+ if (!maximumCommonType.isPresent()) {
printer.print("???");
}
}
@@ -507,10 +509,9 @@ public class PrettyPrintVisitor implements VoidVisitor<Void> {
n.getName().accept(this, arg);
n.getAncestorOfType(NodeWithVariables.class).ifPresent(ancestor -> {
- Optional<Type> maximumCommonType = ancestor.getMaximumCommonType();
- maximumCommonType.ifPresent(commonType -> {
+ ((NodeWithVariables<?>) ancestor).getMaximumCommonType().ifPresent(commonType -> {
- Type type = n.getType();
+ final Type type = n.getType();
ArrayType arrayType = null;
diff --git a/javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java b/javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java
index 7319ff4af..2db00e522 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java
@@ -49,7 +49,7 @@ public class Utils {
public static <E> boolean isNullOrEmpty(Collection<E> collection) {
return collection == null || collection.isEmpty();
}
-
+
public static <T> T assertNotNull(T o) {
if (o == null) {
throw new AssertionError("A reference was unexpectedly null.");
@@ -239,4 +239,15 @@ public class Utils {
return filename.substring(0, extensionIndex);
}
+
+ /**
+ * Like {@link String#trim()}, but only the trailing spaces.
+ */
+ public static String trimTrailingSpaces(String line) {
+ while (line.length() > 0 && line.charAt(line.length() - 1) <= 0x20) {
+ line = line.substring(0, line.length() - 1);
+ }
+ return line;
+ }
+
}
diff --git a/javaparser-testing/src/test/java/com/github/javaparser/JavadocParserTest.java b/javaparser-testing/src/test/java/com/github/javaparser/JavadocParserTest.java
index 9458ec37e..8cd0ede01 100644
--- a/javaparser-testing/src/test/java/com/github/javaparser/JavadocParserTest.java
+++ b/javaparser-testing/src/test/java/com/github/javaparser/JavadocParserTest.java
@@ -130,20 +130,19 @@ public class JavadocParserTest {
" * Add a field to this and automatically add the import of the type if needed\n" +
" *\n" +
" * @param typeClass the type of the field\n" +
- " * continued in a second line\n" +
+ " * continued in a second line\n" +
" * @param name the name of the field\n" +
" * @param modifiers the modifiers like {@link Modifier#PUBLIC}\n" +
" * @return the {@link FieldDeclaration} created\n" +
" ";
Javadoc res = JavadocParser.parse(text);
assertEquals(new Javadoc(JavadocDescription.parseText("Add a field to this and automatically add the import of the type if needed"))
- .addBlockTag(JavadocBlockTag.createParamBlockTag("typeClass", "the type of the field continued in a second line"))
- .addBlockTag(JavadocBlockTag.createParamBlockTag("name", "the name of the field"))
- .addBlockTag(JavadocBlockTag.createParamBlockTag("modifiers", "the modifiers like {@link Modifier#PUBLIC}"))
- .addBlockTag(new JavadocBlockTag(JavadocBlockTag.Type.RETURN, "the {@link FieldDeclaration} created")), res);
+ .addBlockTag(JavadocBlockTag.createParamBlockTag("typeClass", "the type of the field\n continued in a second line"))
+ .addBlockTag(JavadocBlockTag.createParamBlockTag("name", "the name of the field"))
+ .addBlockTag(JavadocBlockTag.createParamBlockTag("modifiers", "the modifiers like {@link Modifier#PUBLIC}"))
+ .addBlockTag(new JavadocBlockTag(JavadocBlockTag.Type.RETURN, "the {@link FieldDeclaration} created")), res);
}
-
@Test
public void startsWithAsteriskEmpty() {
assertEquals(-1, JavadocParser.startsWithAsterisk(""));
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 dd8738ab0..2360d0ce0 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
@@ -178,13 +178,13 @@ public class PrettyPrintVisitorTest {
@Test
public void multilineJavadocGetsFormatted() {
CompilationUnit cu = new CompilationUnit();
- cu.addClass("X").addMethod("abc").setJavadocComment("line1\n line2 *\n * line3");
+ cu.addClass("X").addMethod("abc").setJavadocComment(" line1\n line2 *\n * line3");
assertEqualsNoEol("public class X {\n" +
"\n" +
" /**\n" +
" * line1\n" +
- " * line2 *\n" +
+ " * line2 *\n" +
" * line3\n" +
" */\n" +
" void abc() {\n" +
@@ -209,7 +209,7 @@ public class PrettyPrintVisitorTest {
@Test
public void multilineJavadocWithLotsOfEmptyLinesGetsFormattedNeatly() {
CompilationUnit cu = new CompilationUnit();
- cu.addClass("X").addMethod("abc").setJavadocComment("\n\n\nab\n\n\ncd\n\n\n");
+ cu.addClass("X").addMethod("abc").setJavadocComment("\n\n\n ab\n\n\n cd\n\n\n");
assertEqualsNoEol("public class X {\n" +
"\n" +
@@ -226,7 +226,7 @@ public class PrettyPrintVisitorTest {
@Test
public void singlelineJavadocGetsFormatted() {
CompilationUnit cu = new CompilationUnit();
- cu.addClass("X").addMethod("abc").setJavadocComment("line1");
+ cu.addClass("X").addMethod("abc").setJavadocComment(" line1");
assertEqualsNoEol("public class X {\n" +
"\n" +
diff --git a/javaparser-testing/src/test/java/com/github/javaparser/utils/UtilsTest.java b/javaparser-testing/src/test/java/com/github/javaparser/utils/UtilsTest.java
index ad31ed523..21ecf4cc2 100644
--- a/javaparser-testing/src/test/java/com/github/javaparser/utils/UtilsTest.java
+++ b/javaparser-testing/src/test/java/com/github/javaparser/utils/UtilsTest.java
@@ -78,4 +78,15 @@ public class UtilsTest {
String result = Utils.normalizeEolInTextBlock("\r\n \r \n", "Q");
assertEquals("Q Q Q", result);
}
+
+ @Test
+ public void testTrimTrailingSpaces() {
+ assertEquals("abc", trimTrailingSpaces("abc"));
+ assertEquals(" abc", trimTrailingSpaces(" abc"));
+ assertEquals("abc", trimTrailingSpaces("abc "));
+ assertEquals(" abc", trimTrailingSpaces(" abc "));
+ assertEquals("abc", trimTrailingSpaces("abc\t\0"));
+ assertEquals("", trimTrailingSpaces(" "));
+ assertEquals("", trimTrailingSpaces(""));
+ }
}