authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-09-25 12:03:09-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-09-25 12:03:09-04:00
log839492d0e82e5d7b2a5cee54acb9e64b414e9817
treec44c858a7f7e625f6a69c7be5fc63a935d7d30f8
parenteafb8e85725df570056f2be09173449f802b90fc
signaturelock-open Commit is signed but in an unrecognized format.

fix not syntax highlighting builtin module


2 files changed, 16 insertions(+), 10 deletions(-)

doc/docgen.zig+15-9
...@@ -295,7 +295,7 @@ const Link = struct {...@@ -295,7 +295,7 @@ const Link = struct {
295const Node = union(enum) {295const Node = union(enum) {
296 Content: []const u8,296 Content: []const u8,
297 Nav,297 Nav,
298 Builtin,298 Builtin: Token,
299 HeaderOpen: HeaderOpen,299 HeaderOpen: HeaderOpen,
300 SeeAlso: []const SeeAlsoItem,300 SeeAlso: []const SeeAlsoItem,
301 Code: Code,301 Code: Code,
...@@ -355,7 +355,7 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc {...@@ -355,7 +355,7 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc {
355 try nodes.append(Node.Nav);355 try nodes.append(Node.Nav);
356 } else if (mem.eql(u8, tag_name, "builtin")) {356 } else if (mem.eql(u8, tag_name, "builtin")) {
357 _ = try eatToken(tokenizer, Token.Id.BracketClose);357 _ = try eatToken(tokenizer, Token.Id.BracketClose);
358 try nodes.append(Node.Builtin);358 try nodes.append(Node{ .Builtin = tag_token });
359 } else if (mem.eql(u8, tag_name, "header_open")) {359 } else if (mem.eql(u8, tag_name, "header_open")) {
360 _ = try eatToken(tokenizer, Token.Id.Separator);360 _ = try eatToken(tokenizer, Token.Id.Separator);
361 const content_token = try eatToken(tokenizer, Token.Id.TagContent);361 const content_token = try eatToken(tokenizer, Token.Id.TagContent);
...@@ -718,8 +718,7 @@ fn isType(name: []const u8) bool {...@@ -718,8 +718,7 @@ fn isType(name: []const u8) bool {
718 return false;718 return false;
719}719}
720720
721fn tokenizeAndPrint(allocator: *mem.Allocator, docgen_tokenizer: *Tokenizer, out: var, source_token: Token) !void {721fn tokenizeAndPrintRaw(docgen_tokenizer: *Tokenizer, out: var, source_token: Token, raw_src: []const u8) !void {
722 const raw_src = docgen_tokenizer.buffer[source_token.start..source_token.end];
723 const src = mem.trim(u8, raw_src, " \n");722 const src = mem.trim(u8, raw_src, " \n");
724 try out.write("<code class=\"zig\">");723 try out.write("<code class=\"zig\">");
725 var tokenizer = std.zig.Tokenizer.init(src);724 var tokenizer = std.zig.Tokenizer.init(src);
...@@ -928,13 +927,18 @@ fn tokenizeAndPrint(allocator: *mem.Allocator, docgen_tokenizer: *Tokenizer, out...@@ -928,13 +927,18 @@ fn tokenizeAndPrint(allocator: *mem.Allocator, docgen_tokenizer: *Tokenizer, out
928 try out.write("</code>");927 try out.write("</code>");
929}928}
930929
930fn tokenizeAndPrint(docgen_tokenizer: *Tokenizer, out: var, source_token: Token) !void {
931 const raw_src = docgen_tokenizer.buffer[source_token.start..source_token.end];
932 return tokenizeAndPrintRaw(docgen_tokenizer, out, source_token, raw_src);
933}
934
931fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var, zig_exe: []const u8) !void {935fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var, zig_exe: []const u8) !void {
932 var code_progress_index: usize = 0;936 var code_progress_index: usize = 0;
933937
934 var env_map = try os.getEnvMap(allocator);938 var env_map = try os.getEnvMap(allocator);
935 try env_map.set("ZIG_DEBUG_COLOR", "1");939 try env_map.set("ZIG_DEBUG_COLOR", "1");
936940
937 const builtin_code = try escapeHtml(allocator, try getBuiltinCode(allocator, &env_map, zig_exe));941 const builtin_code = try getBuiltinCode(allocator, &env_map, zig_exe);
938942
939 for (toc.nodes) |node| {943 for (toc.nodes) |node| {
940 switch (node) {944 switch (node) {
...@@ -950,8 +954,10 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var...@@ -950,8 +954,10 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var
950 Node.Nav => {954 Node.Nav => {
951 try out.write(toc.toc);955 try out.write(toc.toc);
952 },956 },
953 Node.Builtin => {957 Node.Builtin => |tok| {
954 try out.print("<pre><code class=\"zig\">{}</code></pre>", builtin_code);958 try out.write("<pre>");
959 try tokenizeAndPrintRaw(tokenizer, out, tok, builtin_code);
960 try out.write("</pre>");
955 },961 },
956 Node.HeaderOpen => |info| {962 Node.HeaderOpen => |info| {
957 try out.print("<h{} id=\"{}\">{}</h{}>\n", info.n, info.url, info.name, info.n);963 try out.print("<h{} id=\"{}\">{}</h{}>\n", info.n, info.url, info.name, info.n);
...@@ -968,7 +974,7 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var...@@ -968,7 +974,7 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var
968 try out.write("</ul>\n");974 try out.write("</ul>\n");
969 },975 },
970 Node.Syntax => |content_tok| {976 Node.Syntax => |content_tok| {
971 try tokenizeAndPrint(allocator, tokenizer, out, content_tok);977 try tokenizeAndPrint(tokenizer, out, content_tok);
972 },978 },
973 Node.Code => |code| {979 Node.Code => |code| {
974 code_progress_index += 1;980 code_progress_index += 1;
...@@ -980,7 +986,7 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var...@@ -980,7 +986,7 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var
980 try out.print("<p class=\"file\">{}.zig</p>", code.name);986 try out.print("<p class=\"file\">{}.zig</p>", code.name);
981 }987 }
982 try out.write("<pre>");988 try out.write("<pre>");
983 try tokenizeAndPrint(allocator, tokenizer, out, code.source_token);989 try tokenizeAndPrint(tokenizer, out, code.source_token);
984 try out.write("</pre>");990 try out.write("</pre>");
985 const name_plus_ext = try std.fmt.allocPrint(allocator, "{}.zig", code.name);991 const name_plus_ext = try std.fmt.allocPrint(allocator, "{}.zig", code.name);
986 const tmp_source_file_name = try os.path.join(allocator, tmp_dir_name, name_plus_ext);992 const tmp_source_file_name = try os.path.join(allocator, tmp_dir_name, name_plus_ext);
doc/langref.html.in+1-1
...@@ -1963,7 +1963,7 @@ test "linked list" {...@@ -1963,7 +1963,7 @@ test "linked list" {
1963 that variable.</li>1963 that variable.</li>
1964 <li>If the struct is in the {#syntax#}return{#endsyntax#} expression, it gets named after1964 <li>If the struct is in the {#syntax#}return{#endsyntax#} expression, it gets named after
1965 the function it is returning from, with the parameter values serialized.</li>1965 the function it is returning from, with the parameter values serialized.</li>
1966 <li>Otherwise, the struct gets a same such as {#syntax#}(anonymous struct at file.zig:7:38){#endsyntax#}.</li>1966 <li>Otherwise, the struct gets a name such as <code>(anonymous struct at file.zig:7:38)</code>.</li>
1967 </ul>1967 </ul>
1968 {#code_begin|exe|struct_name#}1968 {#code_begin|exe|struct_name#}
1969const std = @import("std");1969const std = @import("std");