authorgravatar for thejoshwolfe@gmail.comJosh Wolfe <thejoshwolfe@gmail.com> 2021-03-04 09:05:43-05:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2021-03-07 14:52:52+02:00
loga7c0234eee97c11b1dd6879a3cf313ac9a7bdbd9
treead0787b4b3ae67b1148856877643bc39ea60e718
parent272ae0ca0dff89689ad9715a4d8fa98ed86440b9

docgen --skip-code-tests


1 files changed, 20 insertions(+), 6 deletions(-)

doc/docgen.zig+20-6
...@@ -34,6 +34,15 @@ pub fn main() !void {...@@ -34,6 +34,15 @@ pub fn main() !void {
34 const out_file_name = try (args_it.next(allocator) orelse @panic("expected output arg"));34 const out_file_name = try (args_it.next(allocator) orelse @panic("expected output arg"));
35 defer allocator.free(out_file_name);35 defer allocator.free(out_file_name);
3636
37 var do_code_tests = true;
38 if (args_it.next(allocator)) |arg| {
39 if (mem.eql(u8, try arg, "--skip-code-tests")) {
40 do_code_tests = false;
41 } else {
42 @panic("unrecognized arg");
43 }
44 }
45
37 var in_file = try fs.cwd().openFile(in_file_name, .{ .read = true });46 var in_file = try fs.cwd().openFile(in_file_name, .{ .read = true });
38 defer in_file.close();47 defer in_file.close();
3948
...@@ -50,7 +59,7 @@ pub fn main() !void {...@@ -50,7 +59,7 @@ pub fn main() !void {
50 try fs.cwd().makePath(tmp_dir_name);59 try fs.cwd().makePath(tmp_dir_name);
51 defer fs.cwd().deleteTree(tmp_dir_name) catch {};60 defer fs.cwd().deleteTree(tmp_dir_name) catch {};
5261
53 try genHtml(allocator, &tokenizer, &toc, buffered_writer.writer(), zig_exe);62 try genHtml(allocator, &tokenizer, &toc, buffered_writer.writer(), zig_exe, do_code_tests);
54 try buffered_writer.flush();63 try buffered_writer.flush();
55}64}
5665
...@@ -564,8 +573,7 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc {...@@ -564,8 +573,7 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc {
564 );573 );
565 }574 }
566 _ = try eatToken(tokenizer, Token.Id.BracketClose);575 _ = try eatToken(tokenizer, Token.Id.BracketClose);
567 } else576 } else unreachable; // TODO issue #707
568 unreachable; // TODO issue #707
569 try nodes.append(Node{577 try nodes.append(Node{
570 .Code = Code{578 .Code = Code{
571 .id = code_kind_id,579 .id = code_kind_id,
...@@ -784,12 +792,12 @@ fn tokenizeAndPrintRaw(docgen_tokenizer: *Tokenizer, out: anytype, source_token:...@@ -784,12 +792,12 @@ fn tokenizeAndPrintRaw(docgen_tokenizer: *Tokenizer, out: anytype, source_token:
784 if (mem.indexOf(u8, src[index..token.loc.start], "//")) |comment_start_off| {792 if (mem.indexOf(u8, src[index..token.loc.start], "//")) |comment_start_off| {
785 // render one comment793 // render one comment
786 const comment_start = index + comment_start_off;794 const comment_start = index + comment_start_off;
787 const comment_end_off = mem.indexOf(u8, src[comment_start .. token.loc.start], "\n");795 const comment_end_off = mem.indexOf(u8, src[comment_start..token.loc.start], "\n");
788 const comment_end = if (comment_end_off) |o| comment_start + o else token.loc.start;796 const comment_end = if (comment_end_off) |o| comment_start + o else token.loc.start;
789797
790 try writeEscaped(out, src[index..comment_start]);798 try writeEscaped(out, src[index..comment_start]);
791 try out.writeAll("<span class=\"tok-comment\">");799 try out.writeAll("<span class=\"tok-comment\">");
792 try writeEscaped(out, src[comment_start .. comment_end]);800 try writeEscaped(out, src[comment_start..comment_end]);
793 try out.writeAll("</span>");801 try out.writeAll("</span>");
794 index = comment_end;802 index = comment_end;
795 tokenizer.index = index;803 tokenizer.index = index;
...@@ -1002,7 +1010,7 @@ fn tokenizeAndPrint(docgen_tokenizer: *Tokenizer, out: anytype, source_token: To...@@ -1002,7 +1010,7 @@ fn tokenizeAndPrint(docgen_tokenizer: *Tokenizer, out: anytype, source_token: To
1002 return tokenizeAndPrintRaw(docgen_tokenizer, out, source_token, raw_src);1010 return tokenizeAndPrintRaw(docgen_tokenizer, out, source_token, raw_src);
1003}1011}
10041012
1005fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: anytype, zig_exe: []const u8) !void {1013fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: anytype, zig_exe: []const u8, do_code_tests: bool) !void {
1006 var code_progress_index: usize = 0;1014 var code_progress_index: usize = 0;
10071015
1008 var env_map = try process.getEnvMap(allocator);1016 var env_map = try process.getEnvMap(allocator);
...@@ -1061,6 +1069,12 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any...@@ -1061,6 +1069,12 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any
1061 try out.writeAll("<pre>");1069 try out.writeAll("<pre>");
1062 try tokenizeAndPrint(tokenizer, out, code.source_token);1070 try tokenizeAndPrint(tokenizer, out, code.source_token);
1063 try out.writeAll("</pre>");1071 try out.writeAll("</pre>");
1072
1073 if (!do_code_tests) {
1074 print("SKIP\n", .{});
1075 continue;
1076 }
1077
1064 const name_plus_ext = try std.fmt.allocPrint(allocator, "{s}.zig", .{code.name});1078 const name_plus_ext = try std.fmt.allocPrint(allocator, "{s}.zig", .{code.name});
1065 const tmp_source_file_name = try fs.path.join(1079 const tmp_source_file_name = try fs.path.join(
1066 allocator,1080 allocator,