diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2018-06-07 19:10:45 -0400 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2018-06-07 19:10:45 -0400 |
| commit | 688ff2830d82ea36a9f022ecb7cf4c2bf2e4c586 (patch) | |
| tree | 311f07ddad8db40e1e9ba9a29b36891b10c28acb /doc/docgen.zig | |
| parent | 31aefa6a2179dfae752020195fb193c6333bae7e (diff) | |
| download | zig-688ff2830d82ea36a9f022ecb7cf4c2bf2e4c586.tar.gz zig-688ff2830d82ea36a9f022ecb7cf4c2bf2e4c586.zip | |
langref: automatic update of builtin.zig
now the docs can't get out of date for this
See #367
Diffstat (limited to 'doc/docgen.zig')
| -rw-r--r-- | doc/docgen.zig | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/doc/docgen.zig b/doc/docgen.zig index fed4bb8eba..ed0e1be273 100644 --- a/doc/docgen.zig +++ b/doc/docgen.zig @@ -300,6 +300,7 @@ const Link = struct { const Node = union(enum) { Content: []const u8, Nav, + Builtin, HeaderOpen: HeaderOpen, SeeAlso: []const SeeAlsoItem, Code: Code, @@ -356,6 +357,9 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc { _ = try eatToken(tokenizer, Token.Id.BracketClose); try nodes.append(Node.Nav); + } else if (mem.eql(u8, tag_name, "builtin")) { + _ = try eatToken(tokenizer, Token.Id.BracketClose); + try nodes.append(Node.Builtin); } else if (mem.eql(u8, tag_name, "header_open")) { _ = try eatToken(tokenizer, Token.Id.Separator); const content_token = try eatToken(tokenizer, Token.Id.TagContent); @@ -690,6 +694,9 @@ fn termColor(allocator: *mem.Allocator, input: []const u8) ![]u8 { fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var, zig_exe: []const u8) !void { var code_progress_index: usize = 0; + + const builtin_code = try escapeHtml(allocator, try getBuiltinCode(allocator, zig_exe)); + for (toc.nodes) |node| { switch (node) { Node.Content => |data| { @@ -704,6 +711,9 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var Node.Nav => { try out.write(toc.toc); }, + Node.Builtin => { + try out.print("<pre><code class=\"zig\">{}</code></pre>", builtin_code); + }, Node.HeaderOpen => |info| { try out.print("<h{} id=\"{}\">{}</h{}>\n", info.n, info.url, info.name, info.n); }, @@ -1060,3 +1070,11 @@ fn exec(allocator: *mem.Allocator, args: []const []const u8) !os.ChildProcess.Ex } return result; } + +fn getBuiltinCode(allocator: *mem.Allocator, zig_exe: []const u8) ![]const u8 { + const result = try exec(allocator, []const []const u8{ + zig_exe, + "builtin", + }); + return result.stdout; +} |
