diff --git a/doc/docgen.zig b/doc/docgen.zig index b5cf2ca87b..cbfd67c740 100644 --- a/doc/docgen.zig +++ b/doc/docgen.zig @@ -295,7 +295,7 @@ const Link = struct { const Node = union(enum) { Content: []const u8, Nav, - Builtin, + Builtin: Token, HeaderOpen: HeaderOpen, SeeAlso: []const SeeAlsoItem, Code: Code, @@ -355,7 +355,7 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc { try nodes.append(Node.Nav); } else if (mem.eql(u8, tag_name, "builtin")) { _ = try eatToken(tokenizer, Token.Id.BracketClose); - try nodes.append(Node.Builtin); + try nodes.append(Node{ .Builtin = tag_token }); } else if (mem.eql(u8, tag_name, "header_open")) { _ = try eatToken(tokenizer, Token.Id.Separator); const content_token = try eatToken(tokenizer, Token.Id.TagContent); @@ -718,8 +718,7 @@ fn isType(name: []const u8) bool { return false; } -fn tokenizeAndPrint(allocator: *mem.Allocator, docgen_tokenizer: *Tokenizer, out: var, source_token: Token) !void { - const raw_src = docgen_tokenizer.buffer[source_token.start..source_token.end]; +fn tokenizeAndPrintRaw(docgen_tokenizer: *Tokenizer, out: var, source_token: Token, raw_src: []const u8) !void { const src = mem.trim(u8, raw_src, " \n"); try out.write(""); var tokenizer = std.zig.Tokenizer.init(src); @@ -928,13 +927,18 @@ fn tokenizeAndPrint(allocator: *mem.Allocator, docgen_tokenizer: *Tokenizer, out try out.write(""); } +fn tokenizeAndPrint(docgen_tokenizer: *Tokenizer, out: var, source_token: Token) !void { + const raw_src = docgen_tokenizer.buffer[source_token.start..source_token.end]; + return tokenizeAndPrintRaw(docgen_tokenizer, out, source_token, raw_src); +} + fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var, zig_exe: []const u8) !void { var code_progress_index: usize = 0; var env_map = try os.getEnvMap(allocator); try env_map.set("ZIG_DEBUG_COLOR", "1"); - const builtin_code = try escapeHtml(allocator, try getBuiltinCode(allocator, &env_map, zig_exe)); + const builtin_code = try getBuiltinCode(allocator, &env_map, zig_exe); for (toc.nodes) |node| { switch (node) { @@ -950,8 +954,10 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var Node.Nav => { try out.write(toc.toc); }, - Node.Builtin => { - try out.print("
{}
", builtin_code); + Node.Builtin => |tok| { + try out.write("
");
+                try tokenizeAndPrintRaw(tokenizer, out, tok, builtin_code);
+                try out.write("
"); }, Node.HeaderOpen => |info| { try out.print("{}\n", info.n, info.url, info.name, info.n); @@ -968,7 +974,7 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var try out.write("\n"); }, Node.Syntax => |content_tok| { - try tokenizeAndPrint(allocator, tokenizer, out, content_tok); + try tokenizeAndPrint(tokenizer, out, content_tok); }, Node.Code => |code| { code_progress_index += 1; @@ -980,7 +986,7 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var try out.print("

{}.zig

", code.name); } try out.write("
");
-                try tokenizeAndPrint(allocator, tokenizer, out, code.source_token);
+                try tokenizeAndPrint(tokenizer, out, code.source_token);
                 try out.write("
"); const name_plus_ext = try std.fmt.allocPrint(allocator, "{}.zig", code.name); const tmp_source_file_name = try os.path.join(allocator, tmp_dir_name, name_plus_ext); diff --git a/doc/langref.html.in b/doc/langref.html.in index 4e49db72be..dc307255c7 100644 --- a/doc/langref.html.in +++ b/doc/langref.html.in @@ -1963,7 +1963,7 @@ test "linked list" { that variable.
  • If the struct is in the {#syntax#}return{#endsyntax#} expression, it gets named after the function it is returning from, with the parameter values serialized.
  • -
  • Otherwise, the struct gets a same such as {#syntax#}(anonymous struct at file.zig:7:38){#endsyntax#}.
  • +
  • Otherwise, the struct gets a name such as (anonymous struct at file.zig:7:38).
  • {#code_begin|exe|struct_name#} const std = @import("std");