authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-10-07 14:29:01-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-10-07 14:29:01-04:00
logd70c30055e26be29fceede7559afec46a89a9f5c
tree452f06f099244c77bec91b7f8714a1ee8af2374b
parent9237461b24664ecf12546b87530952f49f0e1166
signaturelock-open Commit is signed but in an unrecognized format.

generated docs: better navigation


2 files changed, 94 insertions(+), 23 deletions(-)

lib/std/special/docs/index.html+71-12
......@@ -22,9 +22,32 @@
2222 padding:1em;
2323 overflow-x: auto;
2424 }
25 nav {
26 width: 10em;
27 position: fixed;
28 left: 0;
29 top: 0;
30 height: 100vh;
31 overflow: auto;
32 }
33 nav h2 {
34 font-size: 1.2em;
35 text-decoration: underline;
36 margin: 0;
37 padding: 0.5em 0;
38 text-align: center;
39 }
40 nav p {
41 margin: 0;
42 padding: 0;
43 text-align: center;
44 }
45 section {
46 margin-left: 10em;
47 }
2548 #listNav {
2649 list-style-type: none;
27 margin: 0;
50 margin: 0.5em 0 0 0;
2851 padding: 0;
2952 overflow: hidden;
3053 background-color: #333;
......@@ -36,7 +59,7 @@
3659 display: block;
3760 color: #fff;
3861 text-align: center;
39 padding: .8em .8em;
62 padding: .5em .8em;
4063 text-decoration: none;
4164 }
4265 #listNav li a:hover {
......@@ -46,14 +69,30 @@
4669 background-color: #4CAF50;
4770 }
4871
72 #listPkgs {
73 list-style-type: none;
74 margin: 0;
75 padding: 0;
76 background-color: #f1f1f1;
77 }
78 #listPkgs li a {
79 display: block;
80 color: #000;
81 padding: 8px 16px;
82 text-decoration: none;
83 }
84 #listPkgs li a:hover {
85 background-color: #555;
86 color: #fff;
87 }
88
4989 #logo {
50 width: 5em;
51 float: left;
52 padding: 0 1em 0 0;
90 width: 8em;
91 padding: 0.5em 1em;
5392 }
5493
5594 #search {
56 width: 90%;
95 width: 100%;
5796 }
5897
5998 @media (prefers-color-scheme: dark) {
......@@ -67,11 +106,35 @@
67106 pre{
68107 background-color:#2A2A2A;
69108 }
109 #listPkgs {
110 background-color: #333;
111 }
112 #listPkgs li a {
113 color: #fff;
114 }
115 #listPkgs li a:hover {
116 background-color: #555;
117 color: #fff;
118 }
70119 }
71120 </style>
72121 </head>
73122 <body>
74 <img alt="ZIG" id="logo" src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNTAgMTAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNmN2E0MWQiPjxwYXRoIGQ9Im0wIDEwdjgwaDE5bDYtMTAgMTItMTBoLTE3di00MGgxNXYtMjB6bTQwIDB2MjBoNjJ2LTIwem05MSAwLTYgMTAtMTIgMTBoMTd2NDBoLTE1djIwaDM1di04MHptLTgzIDYwdjIwaDYydi0yMHoiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwYXRoIGQ9Im0zNyA3MC0xOCAyMHYtMTV6Ii8+PHBhdGggZD0ibTExMyAzMCAxOC0yMHYxNXoiLz48cGF0aCBkPSJtOTYuOTggMTAuNjMgMzYuMjgtMTAuNC04MC4yOSA4OS4xNy0zNi4yOCAxMC40eiIvPjwvZz48L3N2Zz4K"></img>
123 <nav>
124 <img alt="ZIG" id="logo" src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNTAgMTAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNmN2E0MWQiPjxwYXRoIGQ9Im0wIDEwdjgwaDE5bDYtMTAgMTItMTBoLTE3di00MGgxNXYtMjB6bTQwIDB2MjBoNjJ2LTIwem05MSAwLTYgMTAtMTIgMTBoMTd2NDBoLTE1djIwaDM1di04MHptLTgzIDYwdjIwaDYydi0yMHoiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwYXRoIGQ9Im0zNyA3MC0xOCAyMHYtMTV6Ii8+PHBhdGggZD0ibTExMyAzMCAxOC0yMHYxNXoiLz48cGF0aCBkPSJtOTYuOTggMTAuNjMgMzYuMjgtMTAuNC04MC4yOSA4OS4xNy0zNi4yOCAxMC40eiIvPjwvZz48L3N2Zz4K"></img>
125 <div id="sectPkgs" class="hidden">
126 <h2>Packages</h2>
127 <ul id="listPkgs">
128 </ul>
129 </div>
130 <div id="sectInfo" class="hidden">
131 <h2>Zig Version</h2>
132 <p id="tdZigVer"></p>
133 <h2>Target</h2>
134 <p id="tdTarget"></p>
135 </div>
136 </nav>
137 <section>
75138 <input type="search" id="search" autocomplete="off" spellcheck="false" placeholder="`s` to search, `?` to see more options">
76139 <p id="status">Loading...</p>
77140 <div id="sectNav" class="hidden"><ul id="listNav"></ul></div>
......@@ -81,11 +144,6 @@
81144 <div id="fnDocs" class="hidden"></div>
82145 <div id="sectSearchResults" class="hidden"><ul id="listSearchResults"></ul></div>
83146 <div id="sectSearchNoResults" class="hidden"><p>No search results.</p></div>
84 <div id="sectPkgs" class="hidden">
85 <h2>Packages</h2>
86 <ul id="listPkgs">
87 </ul>
88 </div>
89147 <div id="sectTypes" class="hidden">
90148 <h2>Types</h2>
91149 <ul id="listTypes">
......@@ -96,6 +154,7 @@
96154 <ul id="listFns">
97155 </ul>
98156 </div>
157 </section>
99158 <script src="data.js"></script>
100159 <script src="main.js"></script>
101160 </body>
lib/std/special/docs/main.js+23-11
......@@ -15,6 +15,10 @@
1515 var domSectSearchResults = document.getElementById("sectSearchResults");
1616 var domListSearchResults = document.getElementById("listSearchResults");
1717 var domSectSearchNoResults = document.getElementById("sectSearchNoResults");
18 var domSectInfo = document.getElementById("sectInfo");
19 var domListInfo = document.getElementById("listInfo");
20 var domTdTarget = document.getElementById("tdTarget");
21 var domTdZigVer = document.getElementById("tdZigVer");
1822
1923 var searchTimer = null;
2024 var escapeHtmlReplacements = { "&": "&amp;", '"': "&quot;", "<": "&lt;", ">": "&gt;" };
......@@ -69,14 +73,18 @@
6973 domSectTypes.classList.add("hidden");
7074 domSectFns.classList.add("hidden");
7175 domSectSearchResults.classList.add("hidden");
76 domSectInfo.classList.add("hidden");
7277
7378 renderTitle();
79 renderInfo();
80 renderPkgList();
7481
7582 if (curNavSearch !== "") {
7683 return renderSearch();
7784 }
7885
79 var pkg = zigAnalysis.packages[zigAnalysis.rootPkg];
86 var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
87 var pkg = rootPkg;
8088 curNav.pkgObjs = [pkg];
8189 for (var i = 0; i < curNav.pkgNames.length; i += 1) {
8290 var childPkg = zigAnalysis.packages[pkg.table[curNav.pkgNames[i]]];
......@@ -109,9 +117,6 @@
109117
110118 renderNav();
111119
112 var lastPkg = curNav.pkgObjs[curNav.pkgObjs.length - 1];
113 renderPkgList(lastPkg);
114
115120 var lastDecl = curNav.declObjs[curNav.declObjs.length - 1];
116121 if (lastDecl.type != null) {
117122 var typeObj = zigAnalysis.types[lastDecl.type];
......@@ -175,18 +180,26 @@
175180 domSectNav.classList.remove("hidden");
176181 }
177182
183 function renderInfo() {
184 domTdZigVer.textContent = zigAnalysis.params.zigVersion;
185 domTdTarget.textContent = zigAnalysis.params.target;
186
187 domSectInfo.classList.remove("hidden");
188 }
189
178190 function render404() {
179191 domStatus.textContent = "404 Not Found";
180192 domStatus.classList.remove("hidden");
181193 }
182194
183 function renderPkgList(pkg) {
195 function renderPkgList() {
196 var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg];
184197 var list = [];
185 for (var key in pkg.table) {
198 for (var key in rootPkg.table) {
186199 if (key === "root" && rootIsStd) continue;
187200 list.push({
188201 name: key,
189 pkg: pkg.table[key],
202 pkg: rootPkg.table[key],
190203 });
191204 }
192205 list.sort(function(a, b) {
......@@ -359,6 +372,9 @@
359372 curNav.declNames = parts[1].split(".");
360373 }
361374 }
375 if (domSearch.value !== curNavSearch) {
376 domSearch.value = curNavSearch;
377 }
362378 render();
363379 }
364380
......@@ -455,10 +471,6 @@
455471 }
456472 }
457473 function renderSearch() {
458 if (domSearch.value !== curNavSearch) {
459 domSearch.value = curNavSearch;
460 }
461
462474 var matchedDecls = [];
463475 var terms = curNavSearch.split(/[ \r\n\t]+/);
464476 decl_loop: for (var declIndex = 0; declIndex < zigAnalysis.decls.length; declIndex += 1) {