authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-10-09 15:22:26-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-10-09 15:23:13-04:00
log3ce83e879b48273ada1e4e3d795967004f7d21b3
treed05a4e83189472dc02f059490f2796f65241649b
parenta5714ddb973305b38703a69093af066514bdd8f8
signaturelock-open Commit is signed but in an unrecognized format.

generated docs: show error sets pages

also favicon, improve error sets css, syntax awareness of noreturn

2 files changed, 71 insertions(+), 40 deletions(-)

lib/std/special/docs/index.html+4-6
......@@ -3,7 +3,7 @@
33 <head>
44 <meta charset="utf-8">
55 <title>Documentation - Zig</title>
6 <link rel="icon" href="favicon.png">
6 <link rel="icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAgklEQVR4AWMYWuD7EllJIM4G4g4g5oIJ/odhOJ8wToOxSTXgNxDHoeiBMfA4+wGShjyYOCkG/IGqWQziEzYAoUAeiF9D5U+DxEg14DRU7jWIT5IBIOdCxf+A+CQZAAoopEB7QJwBCBwHiip8UYmRdrAlDpIMgApwQZNnNii5Dq0MBgCxxycBnwEd+wAAAABJRU5ErkJggg==">
77 <style type="text/css">
88 body {
99 font-family: system-ui, -apple-system, Roboto, "Segoe UI", sans-serif;
......@@ -127,7 +127,7 @@
127127 text-align: center;
128128 font-size: 1.5em;
129129 }
130 dt, dd {
130 #helpDialog dt, #helpDialog dd {
131131 display: inline;
132132 margin: 0 0.2em;
133133 }
......@@ -152,10 +152,8 @@
152152 background-color: #93e196;
153153 }
154154
155 #tableFnErrors tr td:first-child{
156 text-align: right;
155 #tableFnErrors dt {
157156 font-weight: bold;
158 vertical-align: top;
159157 }
160158
161159 #sectGlobalVars td, #sectFns td, #sectFields td {
......@@ -297,7 +295,7 @@
297295 <div id="fnErrorsAnyError">
298296 <p><span class="tok-type">anyerror</span> means the error set is known only at runtime.</p>
299297 </div>
300 <table id="tableFnErrors"><tbody id="listFnErrors"></tbody></table>
298 <div id="tableFnErrors"><dl id="listFnErrors"></dl></div>
301299 </div>
302300 <div id="fnExamples" class="hidden"></div>
303301 <div id="fnNoExamples" class="hidden">
lib/std/special/docs/main.js+67-34
......@@ -44,6 +44,7 @@
4444 var typeKindIntId;
4545 var typeKindBoolId;
4646 var typeKindVoidId;
47 var typeKindNoReturnId;
4748 var typeKindErrSetId;
4849 var typeKindErrUnionId;
4950 findTypeKinds();
......@@ -171,7 +172,9 @@
171172 }
172173 throw new Error("docs for this decl which is not a container");
173174 }
174 renderType(lastDecl);
175 if (lastDecl.kind != null) {
176 renderType(lastDecl);
177 }
175178 if (lastDecl.pubDecls != null) {
176179 renderContainer(lastDecl);
177180 }
......@@ -211,38 +214,7 @@
211214 }
212215 if (errSetTypeIndex != null) {
213216 var errSetType = zigAnalysis.types[errSetTypeIndex];
214 if (errSetType.errors == null) {
215 domFnErrorsAnyError.classList.remove("hidden");
216 } else {
217 var errorList = [];
218 for (var i = 0; i < errSetType.errors.length; i += 1) {
219 var errObj = zigAnalysis.errors[errSetType.errors[i]];
220 var srcObj = zigAnalysis.astNodes[errObj.src];
221 errorList.push({
222 err: errObj,
223 docs: srcObj.docs,
224 });
225 }
226 errorList.sort(function(a, b) {
227 return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase());
228 });
229
230 resizeDomList(domListFnErrors, errorList.length, '<tr><td></td><td></td></tr>');
231 for (var i = 0; i < errorList.length; i += 1) {
232 var trDom = domListFnErrors.children[i];
233 var nameTdDom = trDom.children[0];
234 var descTdDom = trDom.children[1];
235 nameTdDom.textContent = errorList[i].err.name;
236 var docs = errorList[i].docs;
237 if (docs != null) {
238 descTdDom.innerHTML = markdown(docs);
239 } else {
240 descTdDom.textContent = "";
241 }
242 }
243 domTableFnErrors.classList.remove("hidden");
244 }
245 domSectFnErrors.classList.remove("hidden");
217 renderErrorSet(errSetType);
246218 }
247219
248220 var protoSrcIndex;
......@@ -375,6 +347,19 @@
375347 return navLink(curNav.pkgNames, curNav.declNames.concat([childName]));
376348 }
377349
350 function resizeDomListDl(dlDom, desiredLen) {
351 // add the missing dom entries
352 var i, ev;
353 for (i = dlDom.childElementCount / 2; i < desiredLen; i += 1) {
354 dlDom.insertAdjacentHTML('beforeend', '<dt></dt><dd></dd>');
355 }
356 // remove extra dom entries
357 while (desiredLen < dlDom.childElementCount / 2) {
358 dlDom.removeChild(dlDom.lastChild);
359 dlDom.removeChild(dlDom.lastChild);
360 }
361 }
362
378363 function resizeDomList(listDom, desiredLen, templateHtml) {
379364 // add the missing dom entries
380365 var i, ev;
......@@ -498,6 +483,12 @@
498483 } else {
499484 return "void";
500485 }
486 case typeKindNoReturnId:
487 if (wantHtml) {
488 return '<span class="tok-type">noreturn</span>';
489 } else {
490 return "noreturn";
491 }
501492 case typeKindErrSetId:
502493 if (typeObj.errors == null) {
503494 if (wantHtml) {
......@@ -569,9 +560,46 @@
569560 function renderType(typeObj) {
570561 var name = typeName(typeObj, false, false);
571562 if (name != null && name != "") {
572 domHdrName.innerText = zigAnalysis.typeKinds[typeObj.kind] + " " + name;
563 domHdrName.innerText = name + " (" + zigAnalysis.typeKinds[typeObj.kind] + ")";
573564 domHdrName.classList.remove("hidden");
574565 }
566 if (typeObj.kind == typeKindErrSetId) {
567 renderErrorSet(typeObj);
568 }
569 }
570
571 function renderErrorSet(errSetType) {
572 if (errSetType.errors == null) {
573 domFnErrorsAnyError.classList.remove("hidden");
574 } else {
575 var errorList = [];
576 for (var i = 0; i < errSetType.errors.length; i += 1) {
577 var errObj = zigAnalysis.errors[errSetType.errors[i]];
578 var srcObj = zigAnalysis.astNodes[errObj.src];
579 errorList.push({
580 err: errObj,
581 docs: srcObj.docs,
582 });
583 }
584 errorList.sort(function(a, b) {
585 return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase());
586 });
587
588 resizeDomListDl(domListFnErrors, errorList.length);
589 for (var i = 0; i < errorList.length; i += 1) {
590 var nameTdDom = domListFnErrors.children[i * 2 + 0];
591 var descTdDom = domListFnErrors.children[i * 2 + 1];
592 nameTdDom.textContent = errorList[i].err.name;
593 var docs = errorList[i].docs;
594 if (docs != null) {
595 descTdDom.innerHTML = markdown(docs);
596 } else {
597 descTdDom.textContent = "";
598 }
599 }
600 domTableFnErrors.classList.remove("hidden");
601 }
602 domSectFnErrors.classList.remove("hidden");
575603 }
576604
577605 function allCompTimeFnCallsHaveTypeResult(typeIndex, value) {
......@@ -782,6 +810,8 @@
782810 typeKindBoolId = i;
783811 } else if (zigAnalysis.typeKinds[i] === "Void") {
784812 typeKindVoidId = i;
813 } else if (zigAnalysis.typeKinds[i] === "NoReturn") {
814 typeKindNoReturnId = i;
785815 } else if (zigAnalysis.typeKinds[i] === "ErrorSet") {
786816 typeKindErrSetId = i;
787817 } else if (zigAnalysis.typeKinds[i] === "ErrorUnion") {
......@@ -809,6 +839,9 @@
809839 if (typeKindVoidId == null) {
810840 throw new Error("No type kind 'Void' found");
811841 }
842 if (typeKindNoReturnId == null) {
843 throw new Error("No type kind 'Void' found");
844 }
812845 if (typeKindErrSetId == null) {
813846 throw new Error("No type kind 'ErrorSet' found");
814847 }