| ... | @@ -1168,7 +1168,7 @@ fn printSourceBlock(allocator: Allocator, docgen_tokenizer: *Tokenizer, out: any | ... | @@ -1168,7 +1168,7 @@ fn printSourceBlock(allocator: Allocator, docgen_tokenizer: *Tokenizer, out: any |
| 1168 | try out.writeAll("</pre></figure>"); | 1168 | try out.writeAll("</pre></figure>"); |
| 1169 | } | 1169 | } |
| 1170 | | 1170 | |
| 1171 | fn printShell(out: anytype, shell_content: []const u8) !void { | 1171 | fn printShell(out: anytype, shell_content: []const u8, escape: bool) !void { |
| 1172 | const trimmed_shell_content = mem.trim(u8, shell_content, " \n"); | 1172 | const trimmed_shell_content = mem.trim(u8, shell_content, " \n"); |
| 1173 | try out.writeAll("<figure><figcaption class=\"shell-cap\">Shell</figcaption><pre><samp>"); | 1173 | try out.writeAll("<figure><figcaption class=\"shell-cap\">Shell</figcaption><pre><samp>"); |
| 1174 | var cmd_cont: bool = false; | 1174 | var cmd_cont: bool = false; |
| ... | @@ -1176,15 +1176,41 @@ fn printShell(out: anytype, shell_content: []const u8) !void { | ... | @@ -1176,15 +1176,41 @@ fn printShell(out: anytype, shell_content: []const u8) !void { |
| 1176 | while (iter.next()) |orig_line| { | 1176 | while (iter.next()) |orig_line| { |
| 1177 | const line = mem.trimRight(u8, orig_line, " "); | 1177 | const line = mem.trimRight(u8, orig_line, " "); |
| 1178 | if (!cmd_cont and line.len > 1 and mem.eql(u8, line[0..2], "$ ") and line[line.len - 1] != '\\') { | 1178 | if (!cmd_cont and line.len > 1 and mem.eql(u8, line[0..2], "$ ") and line[line.len - 1] != '\\') { |
| 1179 | try out.print(start_line ++ "$ <kbd>{s}</kbd>" ++ end_line ++ "\n", .{std.mem.trimLeft(u8, line[1..], " ")}); | 1179 | try out.writeAll(start_line ++ "$ <kbd>"); |
| | 1180 | const s = std.mem.trimLeft(u8, line[1..], " "); |
| | 1181 | if (escape) { |
| | 1182 | try writeEscaped(out, s); |
| | 1183 | } else { |
| | 1184 | try out.writeAll(s); |
| | 1185 | } |
| | 1186 | try out.writeAll("</kbd>" ++ end_line ++ "\n"); |
| 1180 | } else if (!cmd_cont and line.len > 1 and mem.eql(u8, line[0..2], "$ ") and line[line.len - 1] == '\\') { | 1187 | } else if (!cmd_cont and line.len > 1 and mem.eql(u8, line[0..2], "$ ") and line[line.len - 1] == '\\') { |
| 1181 | try out.print(start_line ++ "$ <kbd>{s}" ++ end_line ++ "\n", .{std.mem.trimLeft(u8, line[1..], " ")}); | 1188 | try out.writeAll(start_line ++ "$ <kbd>"); |
| | 1189 | const s = std.mem.trimLeft(u8, line[1..], " "); |
| | 1190 | if (escape) { |
| | 1191 | try writeEscaped(out, s); |
| | 1192 | } else { |
| | 1193 | try out.writeAll(s); |
| | 1194 | } |
| | 1195 | try out.writeAll(end_line ++ "\n"); |
| 1182 | cmd_cont = true; | 1196 | cmd_cont = true; |
| 1183 | } else if (line.len > 0 and line[line.len - 1] != '\\' and cmd_cont) { | 1197 | } else if (line.len > 0 and line[line.len - 1] != '\\' and cmd_cont) { |
| 1184 | try out.print(start_line ++ "{s}</kbd>" ++ end_line ++ "\n", .{line}); | 1198 | try out.writeAll(start_line); |
| | 1199 | if (escape) { |
| | 1200 | try writeEscaped(out, line); |
| | 1201 | } else { |
| | 1202 | try out.writeAll(line); |
| | 1203 | } |
| | 1204 | try out.writeAll("</kbd>" ++ end_line ++ "\n"); |
| 1185 | cmd_cont = false; | 1205 | cmd_cont = false; |
| 1186 | } else { | 1206 | } else { |
| 1187 | try out.print(start_line ++ "{s}" ++ end_line ++ "\n", .{line}); | 1207 | try out.writeAll(start_line); |
| | 1208 | if (escape) { |
| | 1209 | try writeEscaped(out, line); |
| | 1210 | } else { |
| | 1211 | try out.writeAll(line); |
| | 1212 | } |
| | 1213 | try out.writeAll(end_line ++ "\n"); |
| 1188 | } | 1214 | } |
| 1189 | } | 1215 | } |
| 1190 | | 1216 | |
| ... | @@ -1254,7 +1280,7 @@ fn genHtml( | ... | @@ -1254,7 +1280,7 @@ fn genHtml( |
| 1254 | }, | 1280 | }, |
| 1255 | .Shell => |content_tok| { | 1281 | .Shell => |content_tok| { |
| 1256 | const raw_shell_content = tokenizer.buffer[content_tok.start..content_tok.end]; | 1282 | const raw_shell_content = tokenizer.buffer[content_tok.start..content_tok.end]; |
| 1257 | try printShell(out, raw_shell_content); | 1283 | try printShell(out, raw_shell_content, true); |
| 1258 | }, | 1284 | }, |
| 1259 | .SyntaxBlock => |syntax_block| { | 1285 | .SyntaxBlock => |syntax_block| { |
| 1260 | try printSourceBlock(allocator, tokenizer, out, syntax_block); | 1286 | try printSourceBlock(allocator, tokenizer, out, syntax_block); |
| ... | @@ -1730,7 +1756,7 @@ fn genHtml( | ... | @@ -1730,7 +1756,7 @@ fn genHtml( |
| 1730 | } | 1756 | } |
| 1731 | | 1757 | |
| 1732 | if (!code.just_check_syntax) { | 1758 | if (!code.just_check_syntax) { |
| 1733 | try printShell(out, shell_buffer.items); | 1759 | try printShell(out, shell_buffer.items, false); |
| 1734 | } | 1760 | } |
| 1735 | }, | 1761 | }, |
| 1736 | } | 1762 | } |
| ... | @@ -1788,7 +1814,7 @@ test "shell parsed" { | ... | @@ -1788,7 +1814,7 @@ test "shell parsed" { |
| 1788 | var buffer = std.ArrayList(u8).init(test_allocator); | 1814 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1789 | defer buffer.deinit(); | 1815 | defer buffer.deinit(); |
| 1790 | | 1816 | |
| 1791 | try printShell(buffer.writer(), shell_out); | 1817 | try printShell(buffer.writer(), shell_out, false); |
| 1792 | std.log.emerg("{s}", .{buffer.items}); | 1818 | std.log.emerg("{s}", .{buffer.items}); |
| 1793 | try testing.expectEqualSlices(u8, expected, buffer.items); | 1819 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1794 | } | 1820 | } |
| ... | @@ -1806,7 +1832,7 @@ test "shell parsed" { | ... | @@ -1806,7 +1832,7 @@ test "shell parsed" { |
| 1806 | var buffer = std.ArrayList(u8).init(test_allocator); | 1832 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1807 | defer buffer.deinit(); | 1833 | defer buffer.deinit(); |
| 1808 | | 1834 | |
| 1809 | try printShell(buffer.writer(), shell_out); | 1835 | try printShell(buffer.writer(), shell_out, false); |
| 1810 | try testing.expectEqualSlices(u8, expected, buffer.items); | 1836 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1811 | } | 1837 | } |
| 1812 | { | 1838 | { |
| ... | @@ -1825,7 +1851,7 @@ test "shell parsed" { | ... | @@ -1825,7 +1851,7 @@ test "shell parsed" { |
| 1825 | var buffer = std.ArrayList(u8).init(test_allocator); | 1851 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1826 | defer buffer.deinit(); | 1852 | defer buffer.deinit(); |
| 1827 | | 1853 | |
| 1828 | try printShell(buffer.writer(), shell_out); | 1854 | try printShell(buffer.writer(), shell_out, false); |
| 1829 | try testing.expectEqualSlices(u8, expected, buffer.items); | 1855 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1830 | } | 1856 | } |
| 1831 | { | 1857 | { |
| ... | @@ -1846,7 +1872,7 @@ test "shell parsed" { | ... | @@ -1846,7 +1872,7 @@ test "shell parsed" { |
| 1846 | var buffer = std.ArrayList(u8).init(test_allocator); | 1872 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1847 | defer buffer.deinit(); | 1873 | defer buffer.deinit(); |
| 1848 | | 1874 | |
| 1849 | try printShell(buffer.writer(), shell_out); | 1875 | try printShell(buffer.writer(), shell_out, false); |
| 1850 | try testing.expectEqualSlices(u8, expected, buffer.items); | 1876 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1851 | } | 1877 | } |
| 1852 | { | 1878 | { |
| ... | @@ -1865,7 +1891,7 @@ test "shell parsed" { | ... | @@ -1865,7 +1891,7 @@ test "shell parsed" { |
| 1865 | var buffer = std.ArrayList(u8).init(test_allocator); | 1891 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1866 | defer buffer.deinit(); | 1892 | defer buffer.deinit(); |
| 1867 | | 1893 | |
| 1868 | try printShell(buffer.writer(), shell_out); | 1894 | try printShell(buffer.writer(), shell_out, false); |
| 1869 | try testing.expectEqualSlices(u8, expected, buffer.items); | 1895 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1870 | } | 1896 | } |
| 1871 | { | 1897 | { |
| ... | @@ -1888,7 +1914,7 @@ test "shell parsed" { | ... | @@ -1888,7 +1914,7 @@ test "shell parsed" { |
| 1888 | var buffer = std.ArrayList(u8).init(test_allocator); | 1914 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1889 | defer buffer.deinit(); | 1915 | defer buffer.deinit(); |
| 1890 | | 1916 | |
| 1891 | try printShell(buffer.writer(), shell_out); | 1917 | try printShell(buffer.writer(), shell_out, false); |
| 1892 | try testing.expectEqualSlices(u8, expected, buffer.items); | 1918 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1893 | } | 1919 | } |
| 1894 | { | 1920 | { |
| ... | @@ -1910,7 +1936,7 @@ test "shell parsed" { | ... | @@ -1910,7 +1936,7 @@ test "shell parsed" { |
| 1910 | var buffer = std.ArrayList(u8).init(test_allocator); | 1936 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1911 | defer buffer.deinit(); | 1937 | defer buffer.deinit(); |
| 1912 | | 1938 | |
| 1913 | try printShell(buffer.writer(), shell_out); | 1939 | try printShell(buffer.writer(), shell_out, false); |
| 1914 | try testing.expectEqualSlices(u8, expected, buffer.items); | 1940 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1915 | } | 1941 | } |
| 1916 | { | 1942 | { |
| ... | @@ -1927,7 +1953,7 @@ test "shell parsed" { | ... | @@ -1927,7 +1953,7 @@ test "shell parsed" { |
| 1927 | var buffer = std.ArrayList(u8).init(test_allocator); | 1953 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1928 | defer buffer.deinit(); | 1954 | defer buffer.deinit(); |
| 1929 | | 1955 | |
| 1930 | try printShell(buffer.writer(), shell_out); | 1956 | try printShell(buffer.writer(), shell_out, false); |
| 1931 | try testing.expectEqualSlices(u8, expected, buffer.items); | 1957 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1932 | } | 1958 | } |
| 1933 | { | 1959 | { |
| ... | @@ -1946,7 +1972,7 @@ test "shell parsed" { | ... | @@ -1946,7 +1972,7 @@ test "shell parsed" { |
| 1946 | var buffer = std.ArrayList(u8).init(test_allocator); | 1972 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1947 | defer buffer.deinit(); | 1973 | defer buffer.deinit(); |
| 1948 | | 1974 | |
| 1949 | try printShell(buffer.writer(), shell_out); | 1975 | try printShell(buffer.writer(), shell_out, false); |
| 1950 | try testing.expectEqualSlices(u8, expected, buffer.items); | 1976 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1951 | } | 1977 | } |
| 1952 | { | 1978 | { |
| ... | @@ -1961,7 +1987,7 @@ test "shell parsed" { | ... | @@ -1961,7 +1987,7 @@ test "shell parsed" { |
| 1961 | var buffer = std.ArrayList(u8).init(test_allocator); | 1987 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1962 | defer buffer.deinit(); | 1988 | defer buffer.deinit(); |
| 1963 | | 1989 | |
| 1964 | try printShell(buffer.writer(), shell_out); | 1990 | try printShell(buffer.writer(), shell_out, false); |
| 1965 | try testing.expectEqualSlices(u8, expected, buffer.items); | 1991 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1966 | } | 1992 | } |
| 1967 | } | 1993 | } |