diff --git a/core/pom.xml b/core/pom.xml index 273e314fb..d3235cb18 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -39,6 +39,11 @@ com.google.guava guava + + org.commonmark + commonmark + 0.28.0 + @@ -61,16 +66,6 @@ auto-service-annotations true - - org.commonmark - commonmark - 0.28.0 - - - org.commonmark - commonmark-ext-gfm-tables - 0.28.0 - diff --git a/core/src/main/java/com/google/googlejavaformat/java/javadoc/JavadocFormatter.java b/core/src/main/java/com/google/googlejavaformat/java/javadoc/JavadocFormatter.java index f801a4d75..dbc2be841 100644 --- a/core/src/main/java/com/google/googlejavaformat/java/javadoc/JavadocFormatter.java +++ b/core/src/main/java/com/google/googlejavaformat/java/javadoc/JavadocFormatter.java @@ -44,7 +44,6 @@ import com.google.googlejavaformat.java.javadoc.Token.MarkdownCodeSpanStart; import com.google.googlejavaformat.java.javadoc.Token.MarkdownFencedCodeBlock; import com.google.googlejavaformat.java.javadoc.Token.MarkdownHardLineBreak; -import com.google.googlejavaformat.java.javadoc.Token.MarkdownTable; import com.google.googlejavaformat.java.javadoc.Token.MoeBeginStripComment; import com.google.googlejavaformat.java.javadoc.Token.MoeEndStripComment; import com.google.googlejavaformat.java.javadoc.Token.OptionalLineBreak; @@ -138,7 +137,6 @@ private static String render(List input, int blockIndent, boolean classic case MarkdownHardLineBreak unused -> output.writeMarkdownHardLineBreak(); case Literal t -> output.writeLiteral(t); case MarkdownFencedCodeBlock t -> output.writeMarkdownFencedCodeBlock(t); - case MarkdownTable t -> output.writeMarkdownTable(t); case ListItemCloseTag unused -> {} case OptionalLineBreak unused -> {} case ParagraphCloseTag unused -> {} diff --git a/core/src/main/java/com/google/googlejavaformat/java/javadoc/JavadocWriter.java b/core/src/main/java/com/google/googlejavaformat/java/javadoc/JavadocWriter.java index 53f6f1a29..182762a7f 100644 --- a/core/src/main/java/com/google/googlejavaformat/java/javadoc/JavadocWriter.java +++ b/core/src/main/java/com/google/googlejavaformat/java/javadoc/JavadocWriter.java @@ -35,7 +35,6 @@ import com.google.googlejavaformat.java.javadoc.Token.ListOpenTag; import com.google.googlejavaformat.java.javadoc.Token.Literal; import com.google.googlejavaformat.java.javadoc.Token.MarkdownFencedCodeBlock; -import com.google.googlejavaformat.java.javadoc.Token.MarkdownTable; import com.google.googlejavaformat.java.javadoc.Token.MoeBeginStripComment; import com.google.googlejavaformat.java.javadoc.Token.MoeEndStripComment; import com.google.googlejavaformat.java.javadoc.Token.PreCloseTag; @@ -45,7 +44,6 @@ import com.google.googlejavaformat.java.javadoc.Token.StartOfLineToken; import com.google.googlejavaformat.java.javadoc.Token.TableCloseTag; import com.google.googlejavaformat.java.javadoc.Token.TableOpenTag; -import java.util.List; /** * Stateful object that accepts "requests" and "writes," producing formatted Javadoc. @@ -356,20 +354,6 @@ void writeMarkdownFencedCodeBlock(MarkdownFencedCodeBlock token) { requestBlankLine(); } - void writeMarkdownTable(MarkdownTable token) { - if (wroteAnythingSignificant && !atStartOfLine) { - requestBlankLine(); - } - flushWhitespace(); - List lines = token.value().lines().toList(); - output.append(lines.get(0)); - for (String line : lines.subList(1, lines.size())) { - writeNewline(AutoIndent.NO_AUTO_INDENT); - output.append(line); - } - requestBlankLine(); - } - @Override public String toString() { return output.toString(); diff --git a/core/src/main/java/com/google/googlejavaformat/java/javadoc/MarkdownPositions.java b/core/src/main/java/com/google/googlejavaformat/java/javadoc/MarkdownPositions.java index 0bbb56fee..d5fdde5d9 100644 --- a/core/src/main/java/com/google/googlejavaformat/java/javadoc/MarkdownPositions.java +++ b/core/src/main/java/com/google/googlejavaformat/java/javadoc/MarkdownPositions.java @@ -28,14 +28,11 @@ import com.google.googlejavaformat.java.javadoc.Token.MarkdownCodeSpanEnd; import com.google.googlejavaformat.java.javadoc.Token.MarkdownCodeSpanStart; import com.google.googlejavaformat.java.javadoc.Token.MarkdownFencedCodeBlock; -import com.google.googlejavaformat.java.javadoc.Token.MarkdownTable; import com.google.googlejavaformat.java.javadoc.Token.ParagraphCloseTag; import com.google.googlejavaformat.java.javadoc.Token.ParagraphOpenTag; import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.commonmark.ext.gfm.tables.TableBlock; -import org.commonmark.ext.gfm.tables.TablesExtension; import org.commonmark.node.BulletList; import org.commonmark.node.Code; import org.commonmark.node.FencedCodeBlock; @@ -96,10 +93,6 @@ void visit(Node node) { case OrderedList orderedList -> addSpan(orderedList, LIST_OPEN_TOKEN, LIST_CLOSE_TOKEN); case ListItem listItem -> alreadyVisitedChildren = visitListItem(listItem); case FencedCodeBlock fencedCodeBlock -> visitFencedCodeBlock(fencedCodeBlock); - case TableBlock tableBlock -> { - visitTableBlock(tableBlock); - alreadyVisitedChildren = true; - } case Code code -> visitCodeSpan(code); // TODO: others default -> {} @@ -150,12 +143,6 @@ private void visitFencedCodeBlock(FencedCodeBlock fencedCodeBlock) { positionToToken.get(start).addLast(token); } - private void visitTableBlock(TableBlock tableBlock) { - int start = startPosition(tableBlock); - int end = endPosition(tableBlock); - positionToToken.get(start).addLast(new MarkdownTable(input.substring(start, end))); - } - private void visitCodeSpan(Code code) { int start = startPosition(code); int end = endPosition(code); @@ -213,10 +200,7 @@ public String toString() { } private static final Parser PARSER = - Parser.builder() - .includeSourceSpans(IncludeSourceSpans.BLOCKS_AND_INLINES) - .extensions(ImmutableList.of(TablesExtension.create())) - .build(); + Parser.builder().includeSourceSpans(IncludeSourceSpans.BLOCKS_AND_INLINES).build(); private static final HeaderOpenTag HEADER_OPEN_TOKEN = new HeaderOpenTag(""); private static final HeaderCloseTag HEADER_CLOSE_TOKEN = new HeaderCloseTag(""); diff --git a/core/src/main/java/com/google/googlejavaformat/java/javadoc/Token.java b/core/src/main/java/com/google/googlejavaformat/java/javadoc/Token.java index caa35d3fa..42b73b069 100644 --- a/core/src/main/java/com/google/googlejavaformat/java/javadoc/Token.java +++ b/core/src/main/java/com/google/googlejavaformat/java/javadoc/Token.java @@ -140,20 +140,6 @@ record MarkdownCodeSpanEnd(String value) implements Token {} record MarkdownFencedCodeBlock(String value, String start, String end, String literal) implements Token {} - /** - * A Markdown table, like: - * - * {@snippet : - * | foo | bar | - * | --- | --- | - * | baz | qux | - * } - * - * @param value the full text of the table as it appeared in the input, including the delimiters - * and the literal content. - */ - record MarkdownTable(String value) implements Token {} - /** * Whitespace that is not in a {@code
} or {@code } section. Whitespace includes
    * leading newlines, asterisks, and tabs and spaces. In the output, it is translated to newlines
diff --git a/core/src/test/java/com/google/googlejavaformat/java/JavadocFormattingTest.java b/core/src/test/java/com/google/googlejavaformat/java/JavadocFormattingTest.java
index 5f2f12526..02af3d137 100644
--- a/core/src/test/java/com/google/googlejavaformat/java/JavadocFormattingTest.java
+++ b/core/src/test/java/com/google/googlejavaformat/java/JavadocFormattingTest.java
@@ -1516,6 +1516,15 @@ class Test {}
     doFormatTest(input, expected);
   }
 
+  private void doFormatTest(String input, String expected) {
+    try {
+      String actual = formatter.formatSource(input);
+      assertThat(actual).isEqualTo(expected);
+    } catch (FormatterException e) {
+      throw new AssertionError(e);
+    }
+  }
+
   @Test
   public void windowsLineSeparator() throws FormatterException {
     String input =
@@ -2007,8 +2016,6 @@ public void markdownTables() {
     assume().that(MARKDOWN_JAVADOC_SUPPORTED).isTrue();
     String input =
 """
-/// Table McTableface
-///
 /// | foo | bar |
 /// | --- | --- |
 /// | baz | qux |
@@ -2016,28 +2023,18 @@ public void markdownTables() {
 /// - |foo|bar|
 ///   |--:|:--|
 ///   |baz|qux|
-///
-/// - Another list.
-///
-///   | which | contains |
-///   | ----- | -------- |
-///   | a | table |
 class Test {}
 """;
-    // We don't currently try to align the column markers in the rows of the last table.
-    String expected = input;
+    // TODO: unmangle the tables
+    String expected =
+"""
+/// | foo | bar | | --- | --- | | baz | qux |
+/// - |foo|bar| |--:|:--| |baz|qux|
+class Test {}
+""";
     doFormatTest(input, expected);
   }
 
-  private void doFormatTest(String input, String expected) {
-    try {
-      String actual = formatter.formatSource(input);
-      assertThat(actual).isEqualTo(expected);
-    } catch (FormatterException e) {
-      throw new AssertionError(e);
-    }
-  }
-
   // TODO: b/346668798 - Test the following Markdown constructs, and make the tests work as needed.
   // We can assume that the CommonMark parser correctly handles Markdown, so the question is whether
   // they are subsequently mishandled by our formatting logic. So for example the CommonMark parser
@@ -2077,4 +2074,10 @@ private void doFormatTest(String input, String expected) {
   //
   // - Autolinks
   //    should be preserved. https://spec.commonmark.org/0.31.2/#autolink
+  //
+  // - Tables
+  //   | foo | bar |
+  //   | --- | --- |
+  //   | baz | qux |
+  //   Probably we should just try not to mangle them. https://spec.commonmark.org/0.31.2/#tables
 }