authorgravatar for kappaloris@gmail.comLoris Cro <kappaloris@gmail.com> 2022-08-16 16:52:55+02:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2022-08-16 16:52:55+02:00
log6e794938b810384323ce332cf0cf3e41ecc6c4a9
tree7bd7515a24e5eafa8c4a95332908e6e5e41ffa47
parentb3922289be1ffaf194b55face332892280981356
parent7f7d58ee895d0e29850ed1823ba91e672edc03a6
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #12374 from vesim987/autodoc-links

autodoc: links to source code

2 files changed, 23 insertions(+), 9 deletions(-)

lib/docs/main.js+17-3
......@@ -51,8 +51,10 @@ var zigAnalysis;
5151 const domHdrName = document.getElementById("hdrName");
5252 const domHelpModal = document.getElementById("helpModal");
5353 const domSearchPlaceholder = document.getElementById("searchPlaceholder");
54 const sourceFileUrlTemplate = "/src-viewer/{{file}}#L{{line}}"
5455 const domLangRefLink = document.getElementById("langRefLink");
5556
57 let lineCounter = 1;
5658 let searchTimer = null;
5759 let searchTrimResults = true;
5860
......@@ -411,6 +413,8 @@ var zigAnalysis;
411413 if (curNavSearch !== "") {
412414 return renderSearch();
413415 }
416
417 lineCounter = 1;
414418
415419 let rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
416420 let pkg = rootPkg;
......@@ -441,6 +445,10 @@ var zigAnalysis;
441445 }
442446
443447 currentType = childDecl;
448 if ("src" in currentType) {
449 const ast_node = zigAnalysis.astNodes[currentType.src];
450 lineCounter += ast_node.line;
451 }
444452 curNav.declObjs.push(currentType);
445453 }
446454
......@@ -981,7 +989,7 @@ var zigAnalysis;
981989 "switch(" +
982990 cond +
983991 ") {" +
984 '<a href="https://github.com/ziglang/zig/tree/master/lib/std/' +
992 '<a href="/src-viewer/' +
985993 file_name +
986994 "#L" +
987995 line +
......@@ -2268,6 +2276,13 @@ var zigAnalysis;
22682276 }
22692277 }
22702278 }
2279 function renderSourceFileLink(decl) {
2280 let srcNode = zigAnalysis.astNodes[decl.src];
2281
2282 return "<a style=\"float: right;\" href=\"" +
2283 sourceFileUrlTemplate.replace("{{file}}",
2284 zigAnalysis.files[srcNode.file]).replace("{{line}}", lineCounter + srcNode.line) + "\">[src]</a>";
2285 }
22712286
22722287 function renderContainer(container) {
22732288 let typesList = [];
......@@ -2386,13 +2401,12 @@ var zigAnalysis;
23862401
23872402 let declType = resolveValue(decl.value);
23882403 console.assert("type" in declType.expr);
2389
23902404 tdFnCode.innerHTML = exprName(declType.expr, {
23912405 wantHtml: true,
23922406 wantLink: true,
23932407 fnDecl: decl,
23942408 linkFnNameDecl: navLinkDecl(decl.name),
2395 });
2409 }) + renderSourceFileLink(decl);
23962410
23972411 let docs = zigAnalysis.astNodes[decl.src].docs;
23982412 if (docs != null) {
src/Autodoc.zig+6-6
......@@ -2824,8 +2824,8 @@ fn walkDecls(
28242824 const ast_node_index = idx: {
28252825 const idx = self.ast_nodes.items.len;
28262826 try self.ast_nodes.append(self.arena, .{
2827 .file = 0,
2828 .line = line,
2827 .file = self.files.getIndex(file) orelse unreachable,
2828 .line = line, // TODO: calculate absolute line
28292829 .col = 0,
28302830 .docs = doc_comment,
28312831 .fields = null, // walkInstruction will fill `fields` if necessary
......@@ -3902,13 +3902,13 @@ fn cteTodo(self: *Autodoc, msg: []const u8) error{OutOfMemory}!DocData.WalkResul
39023902}
39033903
39043904fn writeFileTableToJson(map: std.AutoArrayHashMapUnmanaged(*File, usize), jsw: anytype) !void {
3905 try jsw.beginObject();
3905 try jsw.beginArray();
39063906 var it = map.iterator();
39073907 while (it.next()) |entry| {
3908 try jsw.objectField(entry.key_ptr.*.sub_file_path);
3909 try jsw.emitNumber(entry.value_ptr.*);
3908 try jsw.arrayElem();
3909 try jsw.emitString(entry.key_ptr.*.sub_file_path);
39103910 }
3911 try jsw.endObject();
3911 try jsw.endArray();
39123912}
39133913
39143914fn writePackageTableToJson(