Skip to content

Commit a0a1178

Browse files
committed
autodoc: links to source code
1 parent 1db99b0 commit a0a1178

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

lib/docs/main.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

38883888
fn 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

38983898
fn writePackageTableToJson(

0 commit comments

Comments
 (0)