| ... | @@ -969,7 +969,7 @@ fn tokenizeAndPrintRaw( | ... | @@ -969,7 +969,7 @@ fn tokenizeAndPrintRaw( |
| 969 | source_token: Token, | 969 | source_token: Token, |
| 970 | raw_src: []const u8, | 970 | raw_src: []const u8, |
| 971 | ) !void { | 971 | ) !void { |
| 972 | const src_non_terminated = mem.trim(u8, raw_src, " \n"); | 972 | const src_non_terminated = mem.trim(u8, raw_src, " \r\n"); |
| 973 | const src = try allocator.dupeZ(u8, src_non_terminated); | 973 | const src = try allocator.dupeZ(u8, src_non_terminated); |
| 974 | | 974 | |
| 975 | try out.writeAll("<code>" ++ start_line); | 975 | try out.writeAll("<code>" ++ start_line); |
| ... | @@ -1232,7 +1232,7 @@ fn printSourceBlock(allocator: Allocator, docgen_tokenizer: *Tokenizer, out: any | ... | @@ -1232,7 +1232,7 @@ fn printSourceBlock(allocator: Allocator, docgen_tokenizer: *Tokenizer, out: any |
| 1232 | .zig => try tokenizeAndPrint(allocator, docgen_tokenizer, out, syntax_block.source_token), | 1232 | .zig => try tokenizeAndPrint(allocator, docgen_tokenizer, out, syntax_block.source_token), |
| 1233 | else => { | 1233 | else => { |
| 1234 | const raw_source = docgen_tokenizer.buffer[syntax_block.source_token.start..syntax_block.source_token.end]; | 1234 | const raw_source = docgen_tokenizer.buffer[syntax_block.source_token.start..syntax_block.source_token.end]; |
| 1235 | const trimmed_raw_source = mem.trim(u8, raw_source, " \n"); | 1235 | const trimmed_raw_source = mem.trim(u8, raw_source, " \r\n"); |
| 1236 | | 1236 | |
| 1237 | try out.writeAll("<code>" ++ start_line); | 1237 | try out.writeAll("<code>" ++ start_line); |
| 1238 | try writeEscapedLines(out, trimmed_raw_source); | 1238 | try writeEscapedLines(out, trimmed_raw_source); |
| ... | @@ -1243,12 +1243,12 @@ fn printSourceBlock(allocator: Allocator, docgen_tokenizer: *Tokenizer, out: any | ... | @@ -1243,12 +1243,12 @@ fn printSourceBlock(allocator: Allocator, docgen_tokenizer: *Tokenizer, out: any |
| 1243 | } | 1243 | } |
| 1244 | | 1244 | |
| 1245 | fn printShell(out: anytype, shell_content: []const u8, escape: bool) !void { | 1245 | fn printShell(out: anytype, shell_content: []const u8, escape: bool) !void { |
| 1246 | const trimmed_shell_content = mem.trim(u8, shell_content, " \n"); | 1246 | const trimmed_shell_content = mem.trim(u8, shell_content, " \r\n"); |
| 1247 | try out.writeAll("<figure><figcaption class=\"shell-cap\">Shell</figcaption><pre><samp>"); | 1247 | try out.writeAll("<figure><figcaption class=\"shell-cap\">Shell</figcaption><pre><samp>"); |
| 1248 | var cmd_cont: bool = false; | 1248 | var cmd_cont: bool = false; |
| 1249 | var iter = std.mem.splitScalar(u8, trimmed_shell_content, '\n'); | 1249 | var iter = std.mem.splitScalar(u8, trimmed_shell_content, '\n'); |
| 1250 | while (iter.next()) |orig_line| { | 1250 | while (iter.next()) |orig_line| { |
| 1251 | const line = mem.trimRight(u8, orig_line, " "); | 1251 | const line = mem.trimRight(u8, orig_line, " \r"); |
| 1252 | if (!cmd_cont and line.len > 1 and mem.eql(u8, line[0..2], "$ ") and line[line.len - 1] != '\\') { | 1252 | if (!cmd_cont and line.len > 1 and mem.eql(u8, line[0..2], "$ ") and line[line.len - 1] != '\\') { |
| 1253 | try out.writeAll("$ <kbd>"); | 1253 | try out.writeAll("$ <kbd>"); |
| 1254 | const s = std.mem.trimLeft(u8, line[1..], " "); | 1254 | const s = std.mem.trimLeft(u8, line[1..], " "); |
| ... | @@ -1380,7 +1380,7 @@ fn genHtml( | ... | @@ -1380,7 +1380,7 @@ fn genHtml( |
| 1380 | } | 1380 | } |
| 1381 | | 1381 | |
| 1382 | const raw_source = tokenizer.buffer[code.source_token.start..code.source_token.end]; | 1382 | const raw_source = tokenizer.buffer[code.source_token.start..code.source_token.end]; |
| 1383 | const trimmed_raw_source = mem.trim(u8, raw_source, " \n"); | 1383 | const trimmed_raw_source = mem.trim(u8, raw_source, " \r\n"); |
| 1384 | const tmp_source_file_name = try fs.path.join( | 1384 | const tmp_source_file_name = try fs.path.join( |
| 1385 | allocator, | 1385 | allocator, |
| 1386 | &[_][]const u8{ tmp_dir_name, name_plus_ext }, | 1386 | &[_][]const u8{ tmp_dir_name, name_plus_ext }, |
| ... | @@ -2121,6 +2121,20 @@ test "printShell" { | ... | @@ -2121,6 +2121,20 @@ test "printShell" { |
| 2121 | try printShell(buffer.writer(), shell_out, false); | 2121 | try printShell(buffer.writer(), shell_out, false); |
| 2122 | try testing.expectEqualSlices(u8, expected, buffer.items); | 2122 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 2123 | } | 2123 | } |
| | 2124 | { |
| | 2125 | const shell_out = "$ zig build test.zig\r\nbuild output\r\n"; |
| | 2126 | const expected = |
| | 2127 | \\<figure><figcaption class="shell-cap">Shell</figcaption><pre><samp>$ <kbd>zig build test.zig</kbd> |
| | 2128 | \\build output |
| | 2129 | \\</samp></pre></figure> |
| | 2130 | ; |
| | 2131 | |
| | 2132 | var buffer = std.ArrayList(u8).init(test_allocator); |
| | 2133 | defer buffer.deinit(); |
| | 2134 | |
| | 2135 | try printShell(buffer.writer(), shell_out, false); |
| | 2136 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| | 2137 | } |
| 2124 | { | 2138 | { |
| 2125 | const shell_out = | 2139 | const shell_out = |
| 2126 | \\$ zig build test.zig | 2140 | \\$ zig build test.zig |