authorgravatar for vesim809@pm.meMaciej 'vesim' Kuliński <vesim809@pm.me> 2022-08-08 21:42:38+02:00
committergravatar for vesim809@pm.meMaciej 'vesim' Kuliński <vesim809@pm.me> 2022-08-08 21:42:38+02:00
loga0a1178694be3ebbdad87e54a1b5db6ca954d106
tree45f9c5250fdf84ec07629080cad3fc91f614872a
parent1db99b08e29dd4c8e3dbb8d91e7f0139ec75a008

autodoc: links to source code


2 files changed, 13 insertions(+), 8 deletions(-)

lib/docs/main.js+7-2
...@@ -51,6 +51,7 @@ var zigAnalysis;...@@ -51,6 +51,7 @@ var zigAnalysis;
51 const domHdrName = document.getElementById("hdrName");51 const domHdrName = document.getElementById("hdrName");
52 const domHelpModal = document.getElementById("helpModal");52 const domHelpModal = document.getElementById("helpModal");
53 const domSearchPlaceholder = document.getElementById("searchPlaceholder");53 const domSearchPlaceholder = document.getElementById("searchPlaceholder");
54 const sourceFileUrlTemplate = "https://github.com/ziglang/zig/blob/master/lib/std/{{file}}#L{{line}}"
5455
55 let searchTimer = null;56 let searchTimer = null;
56 let searchTrimResults = true;57 let searchTrimResults = true;
...@@ -2260,6 +2261,11 @@ var zigAnalysis;...@@ -2260,6 +2261,11 @@ var zigAnalysis;
2260 }2261 }
2261 }2262 }
2262 }2263 }
2264 function renderSourceFileLink(decl) {
2265 let srcNode = zigAnalysis.astNodes[decl.src];
2266
2267 return "<a style=\"float: right;\" href=\"" + sourceFileUrlTemplate.replace("{{file}}", zigAnalysis.files[srcNode.file]).replace("{{line}}", srcNode.line) + "\">[src]</a>";
2268 }
22632269
2264 function renderContainer(container) {2270 function renderContainer(container) {
2265 let typesList = [];2271 let typesList = [];
...@@ -2378,13 +2384,12 @@ var zigAnalysis;...@@ -2378,13 +2384,12 @@ var zigAnalysis;
23782384
2379 let declType = resolveValue(decl.value);2385 let declType = resolveValue(decl.value);
2380 console.assert("type" in declType.expr);2386 console.assert("type" in declType.expr);
2381
2382 tdFnCode.innerHTML = exprName(declType.expr, {2387 tdFnCode.innerHTML = exprName(declType.expr, {
2383 wantHtml: true,2388 wantHtml: true,
2384 wantLink: true,2389 wantLink: true,
2385 fnDecl: decl,2390 fnDecl: decl,
2386 linkFnNameDecl: navLinkDecl(decl.name),2391 linkFnNameDecl: navLinkDecl(decl.name),
2387 });2392 }) + renderSourceFileLink(decl);
23882393
2389 let docs = zigAnalysis.astNodes[decl.src].docs;2394 let docs = zigAnalysis.astNodes[decl.src].docs;
2390 if (docs != null) {2395 if (docs != null) {
src/Autodoc.zig+6-6
...@@ -2808,8 +2808,8 @@ fn walkDecls(...@@ -2808,8 +2808,8 @@ fn walkDecls(
2808 const ast_node_index = idx: {2808 const ast_node_index = idx: {
2809 const idx = self.ast_nodes.items.len;2809 const idx = self.ast_nodes.items.len;
2810 try self.ast_nodes.append(self.arena, .{2810 try self.ast_nodes.append(self.arena, .{
2811 .file = 0,2811 .file = self.files.getIndex(file) orelse unreachable,
2812 .line = line,2812 .line = line, // TODO: calculate absolute line
2813 .col = 0,2813 .col = 0,
2814 .docs = doc_comment,2814 .docs = doc_comment,
2815 .fields = null, // walkInstruction will fill `fields` if necessary2815 .fields = null, // walkInstruction will fill `fields` if necessary
...@@ -3886,13 +3886,13 @@ fn cteTodo(self: *Autodoc, msg: []const u8) error{OutOfMemory}!DocData.WalkResul...@@ -3886,13 +3886,13 @@ fn cteTodo(self: *Autodoc, msg: []const u8) error{OutOfMemory}!DocData.WalkResul
3886}3886}
38873887
3888fn writeFileTableToJson(map: std.AutoArrayHashMapUnmanaged(*File, usize), jsw: anytype) !void {3888fn writeFileTableToJson(map: std.AutoArrayHashMapUnmanaged(*File, usize), jsw: anytype) !void {
3889 try jsw.beginObject();3889 try jsw.beginArray();
3890 var it = map.iterator();3890 var it = map.iterator();
3891 while (it.next()) |entry| {3891 while (it.next()) |entry| {
3892 try jsw.objectField(entry.key_ptr.*.sub_file_path);3892 try jsw.arrayElem();
3893 try jsw.emitNumber(entry.value_ptr.*);3893 try jsw.emitString(entry.key_ptr.*.sub_file_path);
3894 }3894 }
3895 try jsw.endObject();3895 try jsw.endArray();
3896}3896}
38973897
3898fn writePackageTableToJson(3898fn writePackageTableToJson(