| ... | ... | @@ -1168,7 +1168,7 @@ fn printSourceBlock(allocator: Allocator, docgen_tokenizer: *Tokenizer, out: any |
| 1168 | 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 | 1172 | const trimmed_shell_content = mem.trim(u8, shell_content, " \n"); |
| 1173 | 1173 | try out.writeAll("<figure><figcaption class=\"shell-cap\">Shell</figcaption><pre><samp>"); |
| 1174 | 1174 | var cmd_cont: bool = false; |
| ... | ... | @@ -1176,15 +1176,41 @@ fn printShell(out: anytype, shell_content: []const u8) !void { |
| 1176 | 1176 | while (iter.next()) |orig_line| { |
| 1177 | 1177 | const line = mem.trimRight(u8, orig_line, " "); |
| 1178 | 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 | 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 | 1196 | cmd_cont = true; |
| 1183 | 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 | 1205 | cmd_cont = false; |
| 1186 | 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 | 1280 | }, |
| 1255 | 1281 | .Shell => |content_tok| { |
| 1256 | 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 | 1285 | .SyntaxBlock => |syntax_block| { |
| 1260 | 1286 | try printSourceBlock(allocator, tokenizer, out, syntax_block); |
| ... | ... | @@ -1730,7 +1756,7 @@ fn genHtml( |
| 1730 | 1756 | } |
| 1731 | 1757 | |
| 1732 | 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 | 1814 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1789 | 1815 | defer buffer.deinit(); |
| 1790 | 1816 | |
| 1791 | | try printShell(buffer.writer(), shell_out); |
| 1817 | try printShell(buffer.writer(), shell_out, false); |
| 1792 | 1818 | std.log.emerg("{s}", .{buffer.items}); |
| 1793 | 1819 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1794 | 1820 | } |
| ... | ... | @@ -1806,7 +1832,7 @@ test "shell parsed" { |
| 1806 | 1832 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1807 | 1833 | defer buffer.deinit(); |
| 1808 | 1834 | |
| 1809 | | try printShell(buffer.writer(), shell_out); |
| 1835 | try printShell(buffer.writer(), shell_out, false); |
| 1810 | 1836 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1811 | 1837 | } |
| 1812 | 1838 | { |
| ... | ... | @@ -1825,7 +1851,7 @@ test "shell parsed" { |
| 1825 | 1851 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1826 | 1852 | defer buffer.deinit(); |
| 1827 | 1853 | |
| 1828 | | try printShell(buffer.writer(), shell_out); |
| 1854 | try printShell(buffer.writer(), shell_out, false); |
| 1829 | 1855 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1830 | 1856 | } |
| 1831 | 1857 | { |
| ... | ... | @@ -1846,7 +1872,7 @@ test "shell parsed" { |
| 1846 | 1872 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1847 | 1873 | defer buffer.deinit(); |
| 1848 | 1874 | |
| 1849 | | try printShell(buffer.writer(), shell_out); |
| 1875 | try printShell(buffer.writer(), shell_out, false); |
| 1850 | 1876 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1851 | 1877 | } |
| 1852 | 1878 | { |
| ... | ... | @@ -1865,7 +1891,7 @@ test "shell parsed" { |
| 1865 | 1891 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1866 | 1892 | defer buffer.deinit(); |
| 1867 | 1893 | |
| 1868 | | try printShell(buffer.writer(), shell_out); |
| 1894 | try printShell(buffer.writer(), shell_out, false); |
| 1869 | 1895 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1870 | 1896 | } |
| 1871 | 1897 | { |
| ... | ... | @@ -1888,7 +1914,7 @@ test "shell parsed" { |
| 1888 | 1914 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1889 | 1915 | defer buffer.deinit(); |
| 1890 | 1916 | |
| 1891 | | try printShell(buffer.writer(), shell_out); |
| 1917 | try printShell(buffer.writer(), shell_out, false); |
| 1892 | 1918 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1893 | 1919 | } |
| 1894 | 1920 | { |
| ... | ... | @@ -1910,7 +1936,7 @@ test "shell parsed" { |
| 1910 | 1936 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1911 | 1937 | defer buffer.deinit(); |
| 1912 | 1938 | |
| 1913 | | try printShell(buffer.writer(), shell_out); |
| 1939 | try printShell(buffer.writer(), shell_out, false); |
| 1914 | 1940 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1915 | 1941 | } |
| 1916 | 1942 | { |
| ... | ... | @@ -1927,7 +1953,7 @@ test "shell parsed" { |
| 1927 | 1953 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1928 | 1954 | defer buffer.deinit(); |
| 1929 | 1955 | |
| 1930 | | try printShell(buffer.writer(), shell_out); |
| 1956 | try printShell(buffer.writer(), shell_out, false); |
| 1931 | 1957 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1932 | 1958 | } |
| 1933 | 1959 | { |
| ... | ... | @@ -1946,7 +1972,7 @@ test "shell parsed" { |
| 1946 | 1972 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1947 | 1973 | defer buffer.deinit(); |
| 1948 | 1974 | |
| 1949 | | try printShell(buffer.writer(), shell_out); |
| 1975 | try printShell(buffer.writer(), shell_out, false); |
| 1950 | 1976 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1951 | 1977 | } |
| 1952 | 1978 | { |
| ... | ... | @@ -1961,7 +1987,7 @@ test "shell parsed" { |
| 1961 | 1987 | var buffer = std.ArrayList(u8).init(test_allocator); |
| 1962 | 1988 | defer buffer.deinit(); |
| 1963 | 1989 | |
| 1964 | | try printShell(buffer.writer(), shell_out); |
| 1990 | try printShell(buffer.writer(), shell_out, false); |
| 1965 | 1991 | try testing.expectEqualSlices(u8, expected, buffer.items); |
| 1966 | 1992 | } |
| 1967 | 1993 | } |