aboutsummaryrefslogtreecommitdiff
path: root/doc/docgen.zig
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-06-07 19:10:45 -0400
committerAndrew Kelley <superjoe30@gmail.com>2018-06-07 19:10:45 -0400
commit688ff2830d82ea36a9f022ecb7cf4c2bf2e4c586 (patch)
tree311f07ddad8db40e1e9ba9a29b36891b10c28acb /doc/docgen.zig
parent31aefa6a2179dfae752020195fb193c6333bae7e (diff)
downloadzig-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.zig18
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;
+}