Skip to content

Commit 8a18d37

Browse files
JimClarke5rnett
authored andcommitted
Add commonmark-java
Signed-off-by: Ryan Nett <JNett96@gmail.com>
1 parent 533c241 commit 8a18d37

File tree

8 files changed

+918
-107
lines changed

8 files changed

+918
-107
lines changed

tensorflow-core/tensorflow-core-generator/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@
3838
<artifactId>javaparser-core</artifactId>
3939
<version>3.15.12</version>
4040
</dependency>
41+
<!-- https://mvnrepository.com/artifact/org.commonmark/commonmark -->
42+
<dependency>
43+
<groupId>org.commonmark</groupId>
44+
<artifactId>commonmark</artifactId>
45+
<version>0.17.1</version>
46+
</dependency>
4147
</dependencies>
4248

4349
<build>

tensorflow-core/tensorflow-core-generator/src/main/java/org/tensorflow/op/generator/ClassGenerator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,7 @@ private void buildGettersAndSetters() {
607607
if (optionsClass != null) {
608608
optionsClass.methodSpecs.stream().filter(x -> !x.isConstructor()).forEach(method -> {
609609
String argName = method.parameters.get(0).name;
610+
610611
builder.addMethod(MethodSpec.methodBuilder(method.name)
611612
.addParameter(method.parameters.get(0))
612613
.addJavadoc(method.javadoc)

tensorflow-core/tensorflow-core-generator/src/main/java/org/tensorflow/op/generator/GeneratorUtils.java

Lines changed: 9 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,18 @@
1616
*/
1717
package org.tensorflow.op.generator;
1818

19-
import java.util.Arrays;
20-
import java.util.List;
21-
import java.util.StringJoiner;
22-
import java.util.regex.MatchResult;
23-
import java.util.regex.Matcher;
24-
import java.util.regex.Pattern;
19+
import org.commonmark.node.Node;
20+
import org.commonmark.parser.Parser;
21+
import org.tensorflow.op.generator.javadoc.JavaDocRenderer;
2522
import org.tensorflow.proto.framework.OpDef.ArgDef;
2623

2724
/**
2825
* Utilities for op generation
2926
*/
3027
final class GeneratorUtils {
3128

29+
private static final Parser parser = Parser.builder().build();
30+
3231
/**
3332
* Convert a Python style name to a Java style name.
3433
*
@@ -72,107 +71,10 @@ static String javaizeMemberName(String name) {
7271
* Convert markdown descriptions to JavaDocs.
7372
*/
7473
static String parseDocumentation(String docs) {
75-
StringBuilder javadoc = new StringBuilder();
76-
List<String> markdownExprs = Arrays
77-
.asList("\n+\\*\\s+", "\n{2,}", "`{3,}\\s*[^\\s\n]*\\s*\n", "`+", "\\*{1,2}\\b", "\\[");
78-
StringJoiner joiner = new StringJoiner("|", "(", ")");
79-
markdownExprs.forEach(joiner::add);
80-
Pattern markupExpr = Pattern.compile(joiner.toString());
81-
82-
Pattern codeBlock = Pattern.compile("(```\\s*\n*)");
83-
84-
boolean inList = false;
85-
String input = docs;
86-
while (true) {
87-
Matcher m = markupExpr.matcher(input);
88-
if (m.find()) {
89-
MatchResult result = m.toMatchResult();
90-
91-
String text = input.substring(0, result.start());
92-
input = input.substring(result.end());
93-
String markup = result.group();
94-
95-
javadoc.append(text);
96-
97-
if (markup.startsWith("\n")) {
98-
javadoc.append("\n");
99-
if (markup.contains("*")) {
100-
javadoc.append(inList ? "<li>\n" : "<ul>\n");
101-
javadoc.append("<li>\n");
102-
inList = true;
103-
} else if (inList) {
104-
javadoc.append("<li>\n<ul>\n");
105-
inList = false;
106-
} else if (!input.startsWith("```")) {
107-
javadoc.append("<p>\n");
108-
}
109-
} else if (markup.startsWith("```")) {
110-
Matcher cb = codeBlock.matcher(input);
111-
if (cb.find()) {
112-
result = cb.toMatchResult();
113-
text = input.substring(0, result.start());
114-
input = input.substring(result.end());
115-
javadoc.append("<pre>{@code\n").append(text).append("}</pre>\n");
116-
} else {
117-
javadoc.append(markup);
118-
}
119-
} else if (markup.startsWith("`")) {
120-
Matcher cb = Pattern.compile(markup).matcher(input);
121-
if (cb.find()) {
122-
result = cb.toMatchResult();
123-
text = input.substring(0, result.start());
124-
input = input.substring(result.end());
125-
javadoc.append("{@code ").append(text).append("}");
126-
} else {
127-
javadoc.append(markup);
128-
}
129-
} else if (markup.equals("**")) {
130-
Matcher cb = Pattern.compile("(\\b\\*{2})").matcher(input);
131-
if (cb.find()) {
132-
result = cb.toMatchResult();
133-
text = input.substring(0, result.start());
134-
input = input.substring(result.end());
135-
javadoc.append("<b>").append(text).append("</b>");
136-
} else {
137-
javadoc.append(markup);
138-
}
139-
} else if (markup.equals("*")) {
140-
Matcher cb = Pattern.compile("(\\b\\*{1})").matcher(input);
141-
if (cb.find()) {
142-
result = cb.toMatchResult();
143-
text = input.substring(0, result.start());
144-
input = input.substring(result.end());
145-
javadoc.append("<i>").append(text).append("</i>");
146-
} else {
147-
javadoc.append(markup);
148-
}
149-
} else if (markup.startsWith("[")) {
150-
//TODO this seems incorrect, there's a "](" between link and label
151-
Matcher cb = Pattern.compile("([^\\[]+)\\]\\((http.+)\\)", Pattern.DOTALL).matcher(input);
152-
if (cb.find()) {
153-
result = cb.toMatchResult();
154-
String label = result.group(1);
155-
String link = result.group(2);
156-
if (input.startsWith(label + "](" + link)) {
157-
input = input.substring(label.length() + link.length() + 2);
158-
javadoc.append("<a href=\"").append(link).append("\">")
159-
.append(parseDocumentation(label)).append("</a>");
160-
} else {
161-
javadoc.append(markup);
162-
}
163-
} else {
164-
javadoc.append(markup);
165-
}
166-
} else {
167-
javadoc.append(markup);
168-
}
74+
Node document = parser.parse(docs);
75+
JavaDocRenderer renderer = JavaDocRenderer.builder().build();
76+
return renderer.render(document);
77+
}
16978

170-
} else {
171-
javadoc.append(input);
172-
break;
173-
}
174-
}
17579

176-
return javadoc.toString();
177-
}
17880
}

0 commit comments

Comments
 (0)