Skip to content

Commit 0d917fe

Browse files
committed
Add ix doc comments. TODO: map to javadac html5
1 parent c20c8c0 commit 0d917fe

File tree

6 files changed

+35
-20
lines changed

6 files changed

+35
-20
lines changed

anchor-src-gen/src/main/java/software/sava/anchor/AnchorAccountMetaParser.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.List;
1010
import java.util.function.Supplier;
1111

12+
import static software.sava.anchor.AnchorUtil.parseDocs;
1213
import static software.sava.anchor.IDL.NO_DOCS;
1314
import static systems.comodal.jsoniter.JsonIterator.fieldEquals;
1415

@@ -72,11 +73,7 @@ public boolean test(final char[] buf, final int offset, final int len, final Jso
7273
} else if (fieldEquals("desc", buf, offset, len)) {
7374
this.desc = ji.readString();
7475
} else if (fieldEquals("docs", buf, offset, len)) {
75-
final var docs = new ArrayList<String>();
76-
while (ji.readArray()) {
77-
docs.add(ji.readString());
78-
}
79-
this.docs = docs;
76+
this.docs = parseDocs(ji);
8077
} else if (fieldEquals("isMut", buf, offset, len) || fieldEquals("writable", buf, offset, len)) {
8178
this.writable = ji.readBoolean();
8279
} else if (fieldEquals("optional", buf, offset, len) || fieldEquals("isOptional", buf, offset, len)) {

anchor-src-gen/src/main/java/software/sava/anchor/AnchorIDL.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.stream.Collectors;
1212

1313
import static software.sava.anchor.AnchorSourceGenerator.removeBlankLines;
14+
import static software.sava.anchor.AnchorUtil.parseDocs;
1415
import static systems.comodal.jsoniter.JsonIterator.fieldEquals;
1516
import static systems.comodal.jsoniter.factory.ElementFactory.parseList;
1617

@@ -339,11 +340,7 @@ public boolean test(final char[] buf, final int offset, final int len, final Jso
339340
} else if (fieldEquals("metadata", buf, offset, len)) {
340341
this.metaData = AnchorIdlMetadata.parseMetadata(ji);
341342
} else if (fieldEquals("docs", buf, offset, len)) {
342-
final var docs = new ArrayList<String>();
343-
while (ji.readArray()) {
344-
docs.add(ji.readString());
345-
}
346-
this.docs = docs;
343+
this.docs = parseDocs(ji);
347344
} else {
348345
throw new IllegalStateException("Unhandled AnchorIDL field " + new String(buf, offset, len));
349346
}

anchor-src-gen/src/main/java/software/sava/anchor/AnchorInstruction.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
public record AnchorInstruction(Discriminator discriminator,
1717
String name,
18+
List<String> docs,
1819
List<AnchorAccountMeta> accounts,
1920
List<NamedType> args) {
2021

@@ -53,7 +54,8 @@ private static String formatDiscriminator(final String ixName, final Discriminat
5354
return Arrays.stream(discriminator.toIntArray())
5455
.mapToObj(Integer::toString)
5556
.collect(Collectors.joining(", ",
56-
String.format(" public static final Discriminator %s = toDiscriminator(", formatDiscriminatorReference(ixName)), ");"));
57+
String.format(" public static final Discriminator %s = toDiscriminator(", formatDiscriminatorReference(ixName)), ");"
58+
));
5759
}
5860

5961
public String generateFactorySource(final GenSrcContext genSrcContext, final String parentTab) {
@@ -90,7 +92,8 @@ public String generateFactorySource(final GenSrcContext genSrcContext, final Str
9092
for (final var accountsClas : knownAccountClasses) {
9193
keyParamsBuilder.append(String.format("""
9294
final %s %s,
93-
""", accountsClas.getSimpleName(), AnchorUtil.camelCase(accountsClas.getSimpleName(), false)));
95+
""", accountsClas.getSimpleName(), AnchorUtil.camelCase(accountsClas.getSimpleName(), false)
96+
));
9497
genSrcContext.addImport(accountsClas);
9598
}
9699
}
@@ -175,6 +178,11 @@ public String generateFactorySource(final GenSrcContext genSrcContext, final Str
175178
dataSerialization = dataBuilder.toString();
176179
}
177180

181+
if (docs != null && !docs.isEmpty()) {
182+
for (final var doc : docs) {
183+
builder.append(tab).append("// ").append(doc).append('\n');
184+
}
185+
}
178186
final var methodSignature = String.format("%spublic static Instruction %s(", tab, name);
179187
builder.append(methodSignature);
180188

@@ -211,13 +219,15 @@ public String generateFactorySource(final GenSrcContext genSrcContext, final Str
211219
return Instruction.createInstruction(%s, keys, _data);
212220
}
213221
""",
214-
programMetaReference).indent(parentTab.length()));
222+
programMetaReference
223+
).indent(parentTab.length()));
215224
} else {
216225
builder.append(String.format("""
217226
return Instruction.createInstruction(%s, keys, %s);
218227
}
219228
""",
220-
programMetaReference, discriminatorReference).indent(parentTab.length()));
229+
programMetaReference, discriminatorReference
230+
).indent(parentTab.length()));
221231
}
222232
genSrcContext.addImport(Instruction.class);
223233

anchor-src-gen/src/main/java/software/sava/anchor/AnchorInstructionParser.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77
import java.util.ArrayList;
88
import java.util.List;
99

10+
import static software.sava.anchor.AnchorUtil.parseDocs;
1011
import static systems.comodal.jsoniter.JsonIterator.fieldEquals;
1112

1213
final class AnchorInstructionParser implements ElementFactory<AnchorInstruction> {
1314

1415
private final IDLType idlType;
1516
private Discriminator discriminator;
1617
private String name;
18+
private List<String> docs;
1719
private List<AnchorAccountMeta> accounts;
1820
private List<NamedType> args;
1921

@@ -54,6 +56,7 @@ public AnchorInstruction create() {
5456
return new AnchorInstruction(
5557
discriminator,
5658
name,
59+
docs,
5760
accumulateNestedAccounts(),
5861
args
5962
);
@@ -62,6 +65,7 @@ public AnchorInstruction create() {
6265
return new AnchorInstruction(
6366
discriminator,
6467
name,
68+
docs,
6569
accounts,
6670
args
6771
);
@@ -77,6 +81,8 @@ public boolean test(final char[] buf, final int offset, final int len, final Jso
7781
this.discriminator = AnchorUtil.parseDiscriminator(ji);
7882
} else if (fieldEquals("name", buf, offset, len)) {
7983
this.name = AnchorUtil.camelCase(ji.readString(), false);
84+
} else if (fieldEquals("docs", buf, offset, len)) {
85+
this.docs = parseDocs(ji);
8086
} else {
8187
ji.skip();
8288
}

anchor-src-gen/src/main/java/software/sava/anchor/AnchorNamedTypeParser.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
import systems.comodal.jsoniter.ValueType;
66
import systems.comodal.jsoniter.factory.ElementFactory;
77

8-
import java.util.ArrayList;
98
import java.util.List;
109

1110
import static software.sava.anchor.AnchorType.ANCHOR_TYPE_PARSER;
11+
import static software.sava.anchor.AnchorUtil.parseDocs;
1212
import static systems.comodal.jsoniter.JsonIterator.fieldEquals;
1313

1414
final class AnchorNamedTypeParser extends BaseNamedTypeParser {
@@ -56,11 +56,7 @@ public boolean test(final char[] buf, final int offset, final int len, final Jso
5656
if (fieldEquals("discriminator", buf, offset, len)) {
5757
this.discriminator = AnchorUtil.parseDiscriminator(ji);
5858
} else if (fieldEquals("docs", buf, offset, len)) {
59-
final var docs = new ArrayList<String>();
60-
while (ji.readArray()) {
61-
docs.add(ji.readString());
62-
}
63-
this.docs = docs;
59+
this.docs = parseDocs(ji);
6460
} else if (fieldEquals("fields", buf, offset, len)) {
6561
this.type = AnchorTypeContextList.createList(ElementFactory.parseList(ji, idlType.lowerTypeParserFactory(), this));
6662
} else if (fieldEquals("index", buf, offset, len)) {

anchor-src-gen/src/main/java/software/sava/anchor/AnchorUtil.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import software.sava.core.programs.Discriminator;
55
import systems.comodal.jsoniter.JsonIterator;
66

7+
import java.util.ArrayList;
78
import java.util.List;
89

910
import static java.util.Arrays.copyOfRange;
@@ -218,6 +219,14 @@ public static String camelCase(final String maybeSnakeCase, final boolean firstU
218219
return !changedFirst && c == len ? maybeSnakeCase : new String(buf, 0, c);
219220
}
220221

222+
static List<String> parseDocs(final JsonIterator ji) {
223+
final var docs = new ArrayList<String>();
224+
while (ji.readArray()) {
225+
docs.add(ji.readString()); // .replace('`', '"')
226+
}
227+
return docs;
228+
}
229+
221230
private AnchorUtil() {
222231
}
223232
}

0 commit comments

Comments
 (0)