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;
5151 const domHdrName = document.getElementById("hdrName");
5252 const domHelpModal = document.getElementById("helpModal");
5353 const domSearchPlaceholder = document.getElementById("searchPlaceholder");
54 const sourceFileUrlTemplate = "https://github.com/ziglang/zig/blob/master/lib/std/{{file}}#L{{line}}"
5455
5556 let searchTimer = null;
5657 let searchTrimResults = true;
......@@ -2260,6 +2261,11 @@ var zigAnalysis;
22602261 }
22612262 }
22622263 }
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
22642270 function renderContainer(container) {
22652271 let typesList = [];
......@@ -2378,13 +2384,12 @@ var zigAnalysis;
23782384
23792385 let declType = resolveValue(decl.value);
23802386 console.assert("type" in declType.expr);
2381
23822387 tdFnCode.innerHTML = exprName(declType.expr, {
23832388 wantHtml: true,
23842389 wantLink: true,
23852390 fnDecl: decl,
23862391 linkFnNameDecl: navLinkDecl(decl.name),
2387 });
2392 }) + renderSourceFileLink(decl);
23882393
23892394 let docs = zigAnalysis.astNodes[decl.src].docs;
23902395 if (docs != null) {
src/Autodoc.zig+6-6
......@@ -2808,8 +2808,8 @@ fn walkDecls(
28082808 const ast_node_index = idx: {
28092809 const idx = self.ast_nodes.items.len;
28102810 try self.ast_nodes.append(self.arena, .{
2811 .file = 0,
2812 .line = line,
2811 .file = self.files.getIndex(file) orelse unreachable,
2812 .line = line, // TODO: calculate absolute line
28132813 .col = 0,
28142814 .docs = doc_comment,
28152815 .fields = null, // walkInstruction will fill `fields` if necessary
......@@ -3886,13 +3886,13 @@ fn cteTodo(self: *Autodoc, msg: []const u8) error{OutOfMemory}!DocData.WalkResul
38863886}
38873887
38883888fn writeFileTableToJson(map: std.AutoArrayHashMapUnmanaged(*File, usize), jsw: anytype) !void {
3889 try jsw.beginObject();
3889 try jsw.beginArray();
38903890 var it = map.iterator();
38913891 while (it.next()) |entry| {
3892 try jsw.objectField(entry.key_ptr.*.sub_file_path);
3893 try jsw.emitNumber(entry.value_ptr.*);
3892 try jsw.arrayElem();
3893 try jsw.emitString(entry.key_ptr.*.sub_file_path);
38943894 }
3895 try jsw.endObject();
3895 try jsw.endArray();
38963896}
38973897
38983898fn writePackageTableToJson(