mirror of
https://github.com/ziglang/zig.git
synced 2026-01-20 06:15:21 +00:00
autodoc: wire in js tokenizer to frontend
This commit is contained in:
parent
116a99d3ce
commit
28ad74e8a6
@ -680,7 +680,88 @@
|
||||
.banner a {
|
||||
color: black;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<style>
|
||||
pre{
|
||||
--zig-keyword: #333;
|
||||
--zig-identifier: 'black';
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
pre {
|
||||
--zig-keyword: 'white';
|
||||
--zig-identifier: 'purple';
|
||||
}
|
||||
}
|
||||
|
||||
.zig_keyword_addrspace,
|
||||
.zig_keyword_align,
|
||||
.zig_keyword_allowzero,
|
||||
.zig_keyword_and,
|
||||
.zig_keyword_anyframe,
|
||||
.zig_keyword_anytype,
|
||||
.zig_keyword_asm,
|
||||
.zig_keyword_async,
|
||||
.zig_keyword_await,
|
||||
.zig_keyword_break,
|
||||
.zig_keyword_callconv,
|
||||
.zig_keyword_catch,
|
||||
.zig_keyword_comptime,
|
||||
.zig_keyword_const,
|
||||
.zig_keyword_continue,
|
||||
.zig_keyword_defer,
|
||||
.zig_keyword_else,
|
||||
.zig_keyword_enum,
|
||||
.zig_keyword_errdefer,
|
||||
.zig_keyword_error,
|
||||
.zig_keyword_export,
|
||||
.zig_keyword_extern,
|
||||
.zig_keyword_fn,
|
||||
.zig_keyword_for,
|
||||
.zig_keyword_if,
|
||||
.zig_keyword_inline,
|
||||
.zig_keyword_noalias,
|
||||
.zig_keyword_noinline,
|
||||
.zig_keyword_nosuspend,
|
||||
.zig_keyword_opaque,
|
||||
.zig_keyword_or,
|
||||
.zig_keyword_orelse,
|
||||
.zig_keyword_packed,
|
||||
.zig_keyword_pub,
|
||||
.zig_keyword_resume,
|
||||
.zig_keyword_return,
|
||||
.zig_keyword_linksection,
|
||||
.zig_keyword_struct,
|
||||
.zig_keyword_suspend,
|
||||
.zig_keyword_switch,
|
||||
.zig_keyword_test,
|
||||
.zig_keyword_threadlocal,
|
||||
.zig_keyword_try,
|
||||
.zig_keyword_union,
|
||||
.zig_keyword_unreachable,
|
||||
.zig_keyword_usingnamespace,
|
||||
.zig_keyword_var,
|
||||
.zig_keyword_volatile,
|
||||
.zig_keyword_while {
|
||||
color: var(--zig-keyword);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.zig_doc_comment, .zig_container_doc_comment {
|
||||
color: #545454;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.zig_builtin {
|
||||
color: #005C7A;
|
||||
}
|
||||
|
||||
.zig_string_literal {
|
||||
color: #d14;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="canvas">
|
||||
@ -906,6 +987,7 @@
|
||||
</div>
|
||||
<script src="data.js"></script>
|
||||
<script src="commonmark.js"></script>
|
||||
<script src="ziglexer.js"></script>
|
||||
<script src="main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@ -660,25 +660,7 @@ const NAV_MODES = {
|
||||
if (!decl.decltest) return;
|
||||
const astNode = getAstNode(decl.decltest);
|
||||
domSectDocTests.classList.remove("hidden");
|
||||
domDocTestsCode.innerHTML = renderZigSource(astNode.code);
|
||||
}
|
||||
|
||||
function renderZigSource(code) {
|
||||
let lines = code.split("\n");
|
||||
let result = "";
|
||||
let indent_level = 0;
|
||||
for (let i = 0; i < lines.length; i += 1) {
|
||||
let line = lines[i].trim();
|
||||
if (line[0] == "}") indent_level -= 1;
|
||||
for (let j = 0; j < indent_level; j += 1) {
|
||||
result += " ";
|
||||
}
|
||||
if (line.startsWith("\\\\")) result += " "
|
||||
result += line;
|
||||
if (i != lines.length - 1) result += "\n";
|
||||
if (line[line.length - 1] == "{") indent_level += 1;
|
||||
}
|
||||
return result;
|
||||
domDocTestsCode.innerHTML = generate_html_for_src(astNode.code);
|
||||
}
|
||||
|
||||
function renderUnknownDecl(decl) {
|
||||
@ -1774,7 +1756,7 @@ const NAV_MODES = {
|
||||
return payloadHtml + "}";
|
||||
}
|
||||
case "comptimeExpr": {
|
||||
return renderZigSource(zigAnalysis.comptimeExprs[expr.comptimeExpr].code);
|
||||
return generate_html_for_src(zigAnalysis.comptimeExprs[expr.comptimeExpr].code);
|
||||
}
|
||||
case "call": {
|
||||
let call = zigAnalysis.calls[expr.call];
|
||||
@ -5016,26 +4998,3 @@ function RadixTree() {
|
||||
}
|
||||
}
|
||||
|
||||
// RADIX TREE:
|
||||
|
||||
// apple
|
||||
// appliance
|
||||
|
||||
// "appl" => [
|
||||
// 'e', => $
|
||||
// 'i' => "ance" => $
|
||||
// ]
|
||||
|
||||
// OUR STUFF:
|
||||
|
||||
// AutoHashMap
|
||||
// AutoArrayHashMap
|
||||
|
||||
// "Auto" => [
|
||||
// 'A', => "rrayHashMap" => $
|
||||
// 'H' => "ashMap" => $
|
||||
// ]
|
||||
|
||||
// BUT!
|
||||
|
||||
// We want to be able to search "Hash", for example!
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
'use strict';
|
||||
|
||||
const Tag = {
|
||||
invalid: "invalid",
|
||||
identifier: "identifier",
|
||||
@ -1941,7 +1943,7 @@ function tokenize_zig_source(raw_source) {
|
||||
|
||||
}
|
||||
|
||||
toks = []
|
||||
let toks = []
|
||||
|
||||
for (let i = 0; i < raw_source.length * 2; i++) {
|
||||
const tok = next();
|
||||
@ -1960,7 +1962,6 @@ function generate_html_for_src(src) {
|
||||
var toks = tokenize_zig_source(src);
|
||||
var html = [];
|
||||
|
||||
html.push("<pre>");
|
||||
let offset = 0;
|
||||
for (let z = 0; z < toks.length; z++) {
|
||||
const t = toks[z];
|
||||
@ -1980,7 +1981,6 @@ function generate_html_for_src(src) {
|
||||
|
||||
|
||||
html.push(src);
|
||||
html.push("</pre>");
|
||||
|
||||
return html.join("");
|
||||
|
||||
|
||||
@ -435,6 +435,7 @@ pub fn generateZirData(self: *Autodoc) !void {
|
||||
var docs_dir = try self.comp_module.comp.zig_lib_directory.handle.openDir("docs", .{});
|
||||
defer docs_dir.close();
|
||||
try docs_dir.copyFile("main.js", output_dir, "main.js", .{});
|
||||
try docs_dir.copyFile("ziglexer.js", output_dir, "ziglexer.js", .{});
|
||||
try docs_dir.copyFile("commonmark.js", output_dir, "commonmark.js", .{});
|
||||
try docs_dir.copyFile("index.html", output_dir, "index.html", .{});
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user