Skip to content

Commit 7afaccc

Browse files
committed
Fix generic types in javadoc extraction.
1 parent fb6f022 commit 7afaccc

File tree

4 files changed

+34
-27
lines changed

4 files changed

+34
-27
lines changed

docs/mx/kenzie/autodoc/api/tools/ExampleGenerator.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ <h3 class="mb-0">ExampleGenerator</h3><p><strong class="d-inline-block mb-2 text
111111
</div><div class="col col-lg-4 col-sm-12 col-md-12"><div class="rounded bg-dark text-light"><pre><code class="language-java">// Randomly-generated example
112112
final String string = generator.getTypeName(type);
113113
assert string.equals(anObject);
114-
assert string.length() == 25;
114+
assert string.length() == 70;
115115
string.toString();
116116
</code></pre>
117117
</div></div></div></section><section id="method:generateConstructor(2)"><div class="row mb-2">
@@ -234,7 +234,7 @@ <h3 class="mb-0">ExampleGenerator</h3><p><strong class="d-inline-block mb-2 text
234234
</div><div class="col col-lg-4 col-sm-12 col-md-12"><div class="rounded bg-dark text-light"><pre><code class="language-java">// Randomly-generated example
235235
final String string = generator.generateShort();
236236
assert string.equals(anObject);
237-
assert string.length() == 70;
237+
assert string.length() == 73;
238238
string.toString();
239239
</code></pre>
240240
</div></div></div></section><section id="method:generateLong(0)"><div class="row mb-2">
@@ -252,7 +252,7 @@ <h3 class="mb-0">ExampleGenerator</h3><p><strong class="d-inline-block mb-2 text
252252
</div><div class="col col-lg-4 col-sm-12 col-md-12"><div class="rounded bg-dark text-light"><pre><code class="language-java">// Randomly-generated example
253253
final String string = generator.generateLong();
254254
assert string.equals(anObject);
255-
assert string.length() == 35;
255+
assert string.length() == 83;
256256
string.toString();
257257
</code></pre>
258258
</div></div></div></section><br />

docs/mx/kenzie/autodoc/impl/site/PublicUtils.html

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
</div>
2121
<div class="dropdown m-1 d-inline">
2222
<button class="btn btn-primary dropdown-toggle" type="button" id="methodMenu" data-bs-toggle="dropdown" aria-expanded="false">Methods</button>
23-
<ul class="dropdown-menu" aria-labelledby="methodMenu"><li><a class="dropdown-item" href="#method:createVarName(1)">createVarName</a></li><li><a class="dropdown-item" href="#method:getPrettyName(1)">getPrettyName</a></li>
23+
<ul class="dropdown-menu" aria-labelledby="methodMenu"><li><a class="dropdown-item" href="#method:getPrettyName(1)">getPrettyName</a></li><li><a class="dropdown-item" href="#method:createVarName(1)">createVarName</a></li>
2424
</ul>
2525
</div></div></div></div></div></div>
2626
<section id="class:PublicUtils"><div class="row mb-2">
@@ -41,10 +41,10 @@ <h3 class="mb-0">PublicUtils</h3><p><strong class="d-inline-block mb-2 text-prim
4141
<div class="row g-0 border rounded flex-md-row mb-4 shadow-sm h-md-250 position-relative">
4242
<div class="col bg-light col-lg-12 pt-4 px-4 pb-0 m-0"><h3 class="mb-0"><span class="text-secondary">new </span>PublicUtils<span class="text-secondary"> ()</span></h3><strong class="d-inline-block mb-2 text-primary"data-bs-toggle="tooltip" data-bs-placement="right" title="Creates an instance of this class.">Constructor</strong></div>
4343
<div class="col col-lg-8 col-sm-12 pt-1 pb-4 px-4 d-flex flex-column position-static">No description is available for this element.</div><div class="col-md-4 d-none d-lg-block"><div class="card m-2 mx-3 bg-body rounded shadow-sm"><div class="card-header">Return Type</div><div class="card-body"><p class="pb-3 mb-0 small lh-sm"><strong class="d-block text-primary"data-bs-toggle="tooltip" data-bs-placement="left" title="mx.kenzie.autodoc.impl.site.PublicUtils">PublicUtils</strong></p></div></div><div class="card m-2 mx-3 bg-body rounded shadow-sm"><div class="card-header">Modifiers</div><div class="card-body"><p class="pb-3 mb-0 small lh-sm"><span class="badge bg-primary" data-bs-toggle="tooltip" data-bs-placement="right" title="Accessible from anywhere.">public</span> </p></div></div></div></div>
44-
</div><div class="col col-lg-4 col-sm-12 col-md-12"></div></div></section><br /><h2 class="border-bottom pb-2 mb-0">Methods</h2><br /><section id="method:createVarName(1)"><div class="row mb-2">
44+
</div><div class="col col-lg-4 col-sm-12 col-md-12"></div></div></section><br /><h2 class="border-bottom pb-2 mb-0">Methods</h2><br /><section id="method:getPrettyName(1)"><div class="row mb-2">
4545
<div class="col-lg-8 col-md-12 col-sm-12">
4646
<div class="row g-0 border rounded flex-md-row mb-4 shadow-sm h-md-250 position-relative">
47-
<div class="col bg-light col-lg-12 pt-4 px-4 pb-0 m-0"><h3 class="mb-0">createVarName<span class="text-secondary"> (Class)</span></h3><strong class="d-inline-block mb-2 text-primary"data-bs-toggle="tooltip" data-bs-placement="right" title="A callable code trigger.">Method</strong></div>
47+
<div class="col bg-light col-lg-12 pt-4 px-4 pb-0 m-0"><h3 class="mb-0">getPrettyName<span class="text-secondary"> (Class)</span></h3><strong class="d-inline-block mb-2 text-primary"data-bs-toggle="tooltip" data-bs-placement="right" title="A callable code trigger.">Method</strong></div>
4848
<div class="col col-lg-8 col-sm-12 pt-1 pb-4 px-4 d-flex flex-column position-static">No description is available for this element.<div class="pt-2 col-sm-12"><button class="d-inline btn btn-outline-primary" type="button" data-bs-toggle="collapse" data-bs-target="#params1809787067" aria-expanded="false" aria-controls="params1809787067">Parameters</button><div class="collapse" id="params1809787067">
4949
<table class="table table-borderless">
5050
<thead><tr><th scope="col">Index</th><th scope="col">Type</th><th scope="col">Name</th>
@@ -56,15 +56,15 @@ <h3 class="mb-0">PublicUtils</h3><p><strong class="d-inline-block mb-2 text-prim
5656
</table></div></div></div>
5757
<div class="col-lg-4 col-md-12 card-deck"><div class="card m-2 mx-3 bg-body rounded shadow-sm"><div class="card-header">Return Type</div><div class="card-body"><p class="pb-3 mb-0 small lh-sm"><strong class="d-block text-primary"data-bs-toggle="tooltip" data-bs-placement="left" title="java.lang.String">String</strong></p></div></div><div class="card m-2 mx-3 bg-body rounded shadow-sm"><div class="card-header">Modifiers</div><div class="card-body"><p class="pb-3 mb-0 small lh-sm"><span class="badge bg-primary" data-bs-toggle="tooltip" data-bs-placement="right" title="Accessible from anywhere.">public</span> <span class="badge bg-info" data-bs-toggle="tooltip" data-bs-placement="right" title="Belongs to the class rather than its objects.">static</span> </p></div></div></div></div>
5858
</div><div class="col col-lg-4 col-sm-12 col-md-12"><div class="rounded bg-dark text-light"><pre><code class="language-java">// Randomly-generated example
59-
final String string = PublicUtils.createVarName(type);
59+
final String string = PublicUtils.getPrettyName(type);
6060
assert string.equals(anObject);
61-
assert string.length() == 47;
61+
assert string.length() == 80;
6262
string.toString();
6363
</code></pre>
64-
</div></div></div></section><section id="method:getPrettyName(1)"><div class="row mb-2">
64+
</div></div></div></section><section id="method:createVarName(1)"><div class="row mb-2">
6565
<div class="col-lg-8 col-md-12 col-sm-12">
6666
<div class="row g-0 border rounded flex-md-row mb-4 shadow-sm h-md-250 position-relative">
67-
<div class="col bg-light col-lg-12 pt-4 px-4 pb-0 m-0"><h3 class="mb-0">getPrettyName<span class="text-secondary"> (Class)</span></h3><strong class="d-inline-block mb-2 text-primary"data-bs-toggle="tooltip" data-bs-placement="right" title="A callable code trigger.">Method</strong></div>
67+
<div class="col bg-light col-lg-12 pt-4 px-4 pb-0 m-0"><h3 class="mb-0">createVarName<span class="text-secondary"> (Class)</span></h3><strong class="d-inline-block mb-2 text-primary"data-bs-toggle="tooltip" data-bs-placement="right" title="A callable code trigger.">Method</strong></div>
6868
<div class="col col-lg-8 col-sm-12 pt-1 pb-4 px-4 d-flex flex-column position-static">No description is available for this element.<div class="pt-2 col-sm-12"><button class="d-inline btn btn-outline-primary" type="button" data-bs-toggle="collapse" data-bs-target="#params1802598046" aria-expanded="false" aria-controls="params1802598046">Parameters</button><div class="collapse" id="params1802598046">
6969
<table class="table table-borderless">
7070
<thead><tr><th scope="col">Index</th><th scope="col">Type</th><th scope="col">Name</th>
@@ -76,9 +76,9 @@ <h3 class="mb-0">PublicUtils</h3><p><strong class="d-inline-block mb-2 text-prim
7676
</table></div></div></div>
7777
<div class="col-lg-4 col-md-12 card-deck"><div class="card m-2 mx-3 bg-body rounded shadow-sm"><div class="card-header">Return Type</div><div class="card-body"><p class="pb-3 mb-0 small lh-sm"><strong class="d-block text-primary"data-bs-toggle="tooltip" data-bs-placement="left" title="java.lang.String">String</strong></p></div></div><div class="card m-2 mx-3 bg-body rounded shadow-sm"><div class="card-header">Modifiers</div><div class="card-body"><p class="pb-3 mb-0 small lh-sm"><span class="badge bg-primary" data-bs-toggle="tooltip" data-bs-placement="right" title="Accessible from anywhere.">public</span> <span class="badge bg-info" data-bs-toggle="tooltip" data-bs-placement="right" title="Belongs to the class rather than its objects.">static</span> </p></div></div></div></div>
7878
</div><div class="col col-lg-4 col-sm-12 col-md-12"><div class="rounded bg-dark text-light"><pre><code class="language-java">// Randomly-generated example
79-
final String string = PublicUtils.getPrettyName(type);
79+
final String string = PublicUtils.createVarName(type);
8080
assert string.equals(anObject);
81-
assert string.length() == 7;
81+
assert string.length() == 45;
8282
string.toString();
8383
</code></pre>
8484
</div></div></div></section><br />

src/main/java/mx/kenzie/autodoc/DocBuilder.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,7 @@
22

33
import mx.kenzie.autodoc.api.note.Ignore;
44

5-
import java.io.Closeable;
6-
import java.io.File;
7-
import java.io.IOException;
8-
import java.net.MalformedURLException;
9-
import java.net.URL;
5+
import java.io.*;
106
import java.security.CodeSource;
117
import java.util.ArrayList;
128
import java.util.Arrays;
@@ -77,15 +73,16 @@ public DocBuilder addClassesFrom(String namespace) throws IOException {
7773
return this;
7874
}
7975

80-
private List<Class<?>> getClasses(String namespace) throws IOException {
76+
protected List<Class<?>> getClasses(String namespace) throws IOException {
8177
final List<Class<?>> list = new ArrayList<>();
82-
final URL jar = this.source();
83-
try (final ZipInputStream zip = new ZipInputStream(jar.openStream())) {
78+
final InputStream stream = this.source();
79+
try (final ZipInputStream zip = new ZipInputStream(stream)) {
8480
while (true) {
8581
final ZipEntry entry = zip.getNextEntry();
8682
if (entry == null) break;
8783
if (entry.isDirectory()) continue;
88-
final String name = entry.getName();
84+
final String name = entry.getName().replace('/', '.');
85+
if (!name.endsWith(".class")) continue;
8986
if (name.startsWith(namespace)) try {
9087
final Class<?> data = Class.forName(name
9188
.substring(0, name.length() - 6)
@@ -100,12 +97,12 @@ private List<Class<?>> getClasses(String namespace) throws IOException {
10097
return list;
10198
}
10299

103-
private URL source() throws MalformedURLException {
100+
protected InputStream source() throws IOException {
104101
if (jar != null) {
105-
return jar.toURI().toURL();
102+
return new FileInputStream(jar);
106103
} else {
107104
final CodeSource source = AutoDocs.class.getProtectionDomain().getCodeSource();
108-
return source.getLocation();
105+
return source.getLocation().openStream();
109106
}
110107
}
111108

src/main/java/mx/kenzie/autodoc/internal/ScratchReader.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,18 @@ protected void readNext() {
8181
}
8282

8383
protected String handleComment(String comment) {
84-
return String.join(System.lineSeparator(), comment.lines()
85-
.map(string -> string.replaceFirst("^\\s*\\*\\s*", "").trim()).toList());
84+
final StringBuilder builder = new StringBuilder();
85+
for (final String line : comment.lines().toList()) {
86+
try {
87+
String thing = line.replaceFirst("^\\s*\\*\\s*", "").trim();
88+
if (thing.equals("<p>")) continue;
89+
builder.append(thing);
90+
} catch (Throwable ignore) {
91+
builder.append(line);
92+
}
93+
builder.append(System.lineSeparator());
94+
}
95+
return builder.toString();
8696
}
8797

8898
enum TypeMatcher {
@@ -97,7 +107,7 @@ public AnnotatedElement find(List<AnnotatedElement> list) {
97107
return null;
98108
}
99109
},
100-
METHOD(Pattern.compile("^(?<type>\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*)\\s+(?<name>\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*)\\s*\\(" +
110+
METHOD(Pattern.compile("^(?<type>\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*(?:\\s*<.+>)?)\\s+(?<name>\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*)\\s*\\(" +
101111
"(?<params>[^)]*)" +
102112
"\\)")) {
103113
@Override

0 commit comments

Comments
 (0)