autodoc: links to source code

This commit is contained in:
Maciej 'vesim' Kuliński 2022-08-08 21:42:38 +02:00
parent 1db99b08e2
commit a0a1178694
2 changed files with 13 additions and 8 deletions

View File

@ -51,6 +51,7 @@ var zigAnalysis;
const domHdrName = document.getElementById("hdrName");
const domHelpModal = document.getElementById("helpModal");
const domSearchPlaceholder = document.getElementById("searchPlaceholder");
const sourceFileUrlTemplate = "https://github.com/ziglang/zig/blob/master/lib/std/{{file}}#L{{line}}"
let searchTimer = null;
let searchTrimResults = true;
@ -2260,6 +2261,11 @@ var zigAnalysis;
}
}
}
function renderSourceFileLink(decl) {
let srcNode = zigAnalysis.astNodes[decl.src];
return "<a style=\"float: right;\" href=\"" + sourceFileUrlTemplate.replace("{{file}}", zigAnalysis.files[srcNode.file]).replace("{{line}}", srcNode.line) + "\">[src]</a>";
}
function renderContainer(container) {
let typesList = [];
@ -2378,13 +2384,12 @@ var zigAnalysis;
let declType = resolveValue(decl.value);
console.assert("type" in declType.expr);
tdFnCode.innerHTML = exprName(declType.expr, {
wantHtml: true,
wantLink: true,
fnDecl: decl,
linkFnNameDecl: navLinkDecl(decl.name),
});
}) + renderSourceFileLink(decl);
let docs = zigAnalysis.astNodes[decl.src].docs;
if (docs != null) {

View File

@ -2808,8 +2808,8 @@ fn walkDecls(
const ast_node_index = idx: {
const idx = self.ast_nodes.items.len;
try self.ast_nodes.append(self.arena, .{
.file = 0,
.line = line,
.file = self.files.getIndex(file) orelse unreachable,
.line = line, // TODO: calculate absolute line
.col = 0,
.docs = doc_comment,
.fields = null, // walkInstruction will fill `fields` if necessary
@ -3886,13 +3886,13 @@ fn cteTodo(self: *Autodoc, msg: []const u8) error{OutOfMemory}!DocData.WalkResul
}
fn writeFileTableToJson(map: std.AutoArrayHashMapUnmanaged(*File, usize), jsw: anytype) !void {
try jsw.beginObject();
try jsw.beginArray();
var it = map.iterator();
while (it.next()) |entry| {
try jsw.objectField(entry.key_ptr.*.sub_file_path);
try jsw.emitNumber(entry.value_ptr.*);
try jsw.arrayElem();
try jsw.emitString(entry.key_ptr.*.sub_file_path);
}
try jsw.endObject();
try jsw.endArray();
}
fn writePackageTableToJson(