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 {
3434 const out_file_name = try (args_it.next(allocator) orelse @panic("expected output arg"));
3535 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
3746 var in_file = try fs.cwd().openFile(in_file_name, .{ .read = true });
3847 defer in_file.close();
3948
......@@ -50,7 +59,7 @@ pub fn main() !void {
5059 try fs.cwd().makePath(tmp_dir_name);
5160 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);
5463 try buffered_writer.flush();
5564}
5665
......@@ -564,8 +573,7 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc {
564573 );
565574 }
566575 _ = try eatToken(tokenizer, Token.Id.BracketClose);
567 } else
568 unreachable; // TODO issue #707
576 } else unreachable; // TODO issue #707
569577 try nodes.append(Node{
570578 .Code = Code{
571579 .id = code_kind_id,
......@@ -784,12 +792,12 @@ fn tokenizeAndPrintRaw(docgen_tokenizer: *Tokenizer, out: anytype, source_token:
784792 if (mem.indexOf(u8, src[index..token.loc.start], "//")) |comment_start_off| {
785793 // render one comment
786794 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");
788796 const comment_end = if (comment_end_off) |o| comment_start + o else token.loc.start;
789797
790798 try writeEscaped(out, src[index..comment_start]);
791799 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]);
793801 try out.writeAll("</span>");
794802 index = comment_end;
795803 tokenizer.index = index;
......@@ -1002,7 +1010,7 @@ fn tokenizeAndPrint(docgen_tokenizer: *Tokenizer, out: anytype, source_token: To
10021010 return tokenizeAndPrintRaw(docgen_tokenizer, out, source_token, raw_src);
10031011}
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 {
10061014 var code_progress_index: usize = 0;
10071015
10081016 var env_map = try process.getEnvMap(allocator);
......@@ -1061,6 +1069,12 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any
10611069 try out.writeAll("<pre>");
10621070 try tokenizeAndPrint(tokenizer, out, code.source_token);
10631071 try out.writeAll("</pre>");
1072
1073 if (!do_code_tests) {
1074 print("SKIP\n", .{});
1075 continue;
1076 }
1077
10641078 const name_plus_ext = try std.fmt.allocPrint(allocator, "{s}.zig", .{code.name});
10651079 const tmp_source_file_name = try fs.path.join(
10661080 allocator,