authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-10-09 00:24:58-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-10-09 00:24:58-04:00
log48f5b21e7cb1da7593a780ffb59394ce18d1113d
tree459130e82796781a5270ab328be3d91dbd35872f
parent71fb4ef8dad086321d98cac1cb10ac5869a53e76
signaturelock-open Commit is signed but in an unrecognized format.

generated docs: functions in a table with descriptions


2 files changed, 83 insertions(+), 42 deletions(-)

lib/std/special/docs/index.html+8-3
...@@ -158,10 +158,13 @@...@@ -158,10 +158,13 @@
158 vertical-align: top;158 vertical-align: top;
159 }159 }
160160
161 #sectGlobalVars td {161 #sectGlobalVars td, #sectFns td {
162 vertical-align: top;162 vertical-align: top;
163 margin: 0;163 margin: 0;
164 padding: 0.5em;164 padding: 0.5em;
165 max-width: 20em;
166 text-overflow: ellipsis;
167 overflow-x: hidden;
165 }168 }
166169
167 .tok-kw {170 .tok-kw {
...@@ -327,8 +330,10 @@...@@ -327,8 +330,10 @@
327 </div>330 </div>
328 <div id="sectFns" class="hidden">331 <div id="sectFns" class="hidden">
329 <h2>Functions</h2>332 <h2>Functions</h2>
330 <ul id="listFns">333 <table>
331 </ul>334 <tbody id="listFns">
335 </tbody>
336 </table>
332 </div>337 </div>
333 <div id="sectErrSets" class="hidden">338 <div id="sectErrSets" class="hidden">
334 <h2>Error Sets</h2>339 <h2>Error Sets</h2>
lib/std/special/docs/main.js+75-39
...@@ -191,30 +191,7 @@...@@ -191,30 +191,7 @@
191 }191 }
192192
193 function renderFn(fnDecl) {193 function renderFn(fnDecl) {
194 var typeObj = zigAnalysis.types[fnDecl.type];194 domFnProtoCode.innerHTML = typeIndexName(fnDecl.type, true, true, fnDecl);
195 var protoHtml = '<span class="tok-kw">fn</span> <span class="tok-fn">'
196 + escapeHtml(fnDecl.name) + '</span>(';
197 if (typeObj.args != null) {
198 for (var i = 0; i < typeObj.args.length; i += 1) {
199 if (i != 0) {
200 protoHtml += ', ';
201 }
202 var argTypeIndex = typeObj.args[i];
203 if (argTypeIndex != null) {
204 protoHtml += typeIndexName(argTypeIndex, true, true);
205 } else {
206 protoHtml += '<span class="tok-kw">var</span>';
207 }
208 }
209 }
210
211 protoHtml += ') ';
212 if (typeObj.ret != null) {
213 protoHtml += typeIndexName(typeObj.ret, true, true, fnDecl.value);
214 } else {
215 protoHtml += '<span class="tok-kw">var</span>';
216 }
217 domFnProtoCode.innerHTML = protoHtml;
218195
219 var docsSource = null;196 var docsSource = null;
220 var srcNode = zigAnalysis.astNodes[fnDecl.src];197 var srcNode = zigAnalysis.astNodes[fnDecl.src];
...@@ -222,6 +199,7 @@...@@ -222,6 +199,7 @@
222 docsSource = srcNode.docs;199 docsSource = srcNode.docs;
223 }200 }
224201
202 var typeObj = zigAnalysis.types[fnDecl.type];
225 var errSetTypeIndex = null;203 var errSetTypeIndex = null;
226 if (typeObj.ret != null) {204 if (typeObj.ret != null) {
227 var retType = zigAnalysis.types[typeObj.ret];205 var retType = zigAnalysis.types[typeObj.ret];
...@@ -409,24 +387,24 @@...@@ -409,24 +387,24 @@
409 }387 }
410 }388 }
411389
412 function typeIndexName(typeIndex, wantHtml, wantLink, fnIndex) {390 function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, skipFnName) {
413 var typeObj = zigAnalysis.types[typeIndex];391 var typeObj = zigAnalysis.types[typeIndex];
414 if (wantLink) {392 if (wantLink) {
415 var declIndex = getCanonTypeDecl(typeIndex);393 var declIndex = getCanonTypeDecl(typeIndex);
416 var declPath = getCanonDeclPath(declIndex);394 var declPath = getCanonDeclPath(declIndex);
417 var haveLink = declPath != null;395 var haveLink = declPath != null;
418 var typeNameHtml = typeName(typeObj, true, !haveLink, fnIndex);396 var typeNameHtml = typeName(typeObj, true, !haveLink, fnDecl, skipFnName);
419 if (haveLink) {397 if (haveLink) {
420 return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + typeNameHtml + '</a>';398 return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + typeNameHtml + '</a>';
421 } else {399 } else {
422 return typeNameHtml;400 return typeNameHtml;
423 }401 }
424 } else {402 } else {
425 return typeName(typeObj, wantHtml, false, fnIndex);403 return typeName(typeObj, wantHtml, false, fnDecl, skipFnName);
426 }404 }
427 }405 }
428406
429 function typeName(typeObj, wantHtml, wantSubLink, fnIndex) {407 function typeName(typeObj, wantHtml, wantSubLink, fnDecl, skipFnName) {
430 switch (typeObj.kind) {408 switch (typeObj.kind) {
431 case typeKindPtrId:409 case typeKindPtrId:
432 var name = "";410 var name = "";
...@@ -537,12 +515,48 @@...@@ -537,12 +515,48 @@
537 case typeKindErrUnionId:515 case typeKindErrUnionId:
538 var errSetTypeObj = zigAnalysis.types[typeObj.err];516 var errSetTypeObj = zigAnalysis.types[typeObj.err];
539 var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null);517 var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null);
540 if (errSetTypeObj.fn != null && errSetTypeObj.fn == fnIndex) {518 if (fnDecl != null && errSetTypeObj.fn === fnDecl.value) {
541 // function index parameter supplied and this is the inferred error set of it519 // function index parameter supplied and this is the inferred error set of it
542 return "!" + payloadHtml;520 return "!" + payloadHtml;
543 } else {521 } else {
544 return typeIndexName(typeObj.err, wantHtml, wantSubLink, null) + "!" + payloadHtml;522 return typeIndexName(typeObj.err, wantHtml, wantSubLink, null) + "!" + payloadHtml;
545 }523 }
524 case typeKindFnId:
525 var payloadHtml = "";
526 if (wantHtml) {
527 payloadHtml += '<span class="tok-kw">fn</span>';
528 if (fnDecl != null && !skipFnName) {
529 payloadHtml += ' <span class="tok-fn">' + escapeHtml(fnDecl.name) + '</span>';
530 }
531 } else {
532 payloadHtml += 'fn'
533 }
534 payloadHtml += '(';
535 if (typeObj.args != null) {
536 for (var i = 0; i < typeObj.args.length; i += 1) {
537 if (i != 0) {
538 payloadHtml += ', ';
539 }
540 var argTypeIndex = typeObj.args[i];
541 if (argTypeIndex != null) {
542 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
543 } else if (wantHtml) {
544 payloadHtml += '<span class="tok-kw">var</span>';
545 } else {
546 payloadHtml += 'var';
547 }
548 }
549 }
550
551 payloadHtml += ') ';
552 if (typeObj.ret != null) {
553 payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl);
554 } else if (wantHtml) {
555 payloadHtml += '<span class="tok-kw">var</span>';
556 } else {
557 payloadHtml += 'var';
558 }
559 return payloadHtml;
546 default:560 default:
547 if (wantHtml) {561 if (wantHtml) {
548 return escapeHtml(typeObj.name);562 return escapeHtml(typeObj.name);
...@@ -652,13 +666,28 @@...@@ -652,13 +666,28 @@
652 }666 }
653667
654 if (fnsList.length !== 0) {668 if (fnsList.length !== 0) {
655 resizeDomList(domListFns, fnsList.length, '<li><a href="#"></a></li>');669 resizeDomList(domListFns, fnsList.length,
670 '<tr><td><a href="#"></a></td><td></td><td></td></tr>');
656 for (var i = 0; i < fnsList.length; i += 1) {671 for (var i = 0; i < fnsList.length; i += 1) {
657 var liDom = domListFns.children[i];
658 var aDom = liDom.children[0];
659 var decl = fnsList[i];672 var decl = fnsList[i];
660 aDom.textContent = decl.name;673 var trDom = domListFns.children[i];
661 aDom.setAttribute('href', navLinkDecl(decl.name));674
675 var tdName = trDom.children[0];
676 var tdNameA = tdName.children[0];
677 var tdType = trDom.children[1];
678 var tdDesc = trDom.children[2];
679
680 tdNameA.setAttribute('href', navLinkDecl(decl.name));
681 tdNameA.textContent = decl.name;
682
683 tdType.innerHTML = typeIndexName(decl.type, true, true, decl, true);
684
685 var docs = zigAnalysis.astNodes[decl.src].docs;
686 if (docs != null) {
687 tdDesc.innerHTML = shortDescMarkdown(docs);
688 } else {
689 tdDesc.textContent = "";
690 }
662 }691 }
663 domSectFns.classList.remove("hidden");692 domSectFns.classList.remove("hidden");
664 }693 }
...@@ -677,24 +706,25 @@...@@ -677,24 +706,25 @@
677 }706 }
678707
679 if (varsList.length !== 0) {708 if (varsList.length !== 0) {
680 resizeDomList(domListGlobalVars, varsList.length, '<tr><td></td><td></td><td></td></tr>');709 resizeDomList(domListGlobalVars, varsList.length,
710 '<tr><td><a href="#"></a></td><td></td><td></td></tr>');
681 for (var i = 0; i < varsList.length; i += 1) {711 for (var i = 0; i < varsList.length; i += 1) {
682 var decl = varsList[i];712 var decl = varsList[i];
683 var trDom = domListGlobalVars.children[i];713 var trDom = domListGlobalVars.children[i];
684 var innerHtml = "";
685714
686 var tdName = trDom.children[0];715 var tdName = trDom.children[0];
716 var tdNameA = tdName.children[0];
687 var tdType = trDom.children[1];717 var tdType = trDom.children[1];
688 var tdDesc = trDom.children[2];718 var tdDesc = trDom.children[2];
689719
690 tdName.innerHTML = '<a href="' +720 tdNameA.setAttribute('href', navLinkDecl(decl.name));
691 navLinkDecl(decl.name) + '">' + escapeHtml(decl.name) + '</a>';721 tdNameA.textContent = decl.name;
692722
693 tdType.innerHTML = typeIndexName(decl.type, true, true);723 tdType.innerHTML = typeIndexName(decl.type, true, true);
694724
695 var docs = zigAnalysis.astNodes[decl.src].docs;725 var docs = zigAnalysis.astNodes[decl.src].docs;
696 if (docs != null) {726 if (docs != null) {
697 tdDesc.innerHTML = markdown(docs);727 tdDesc.innerHTML = shortDescMarkdown(docs);
698 } else {728 } else {
699 tdDesc.textContent = "";729 tdDesc.textContent = "";
700 }730 }
...@@ -923,6 +953,12 @@...@@ -923,6 +953,12 @@
923 });953 });
924 }954 }
925955
956 function shortDescMarkdown(docs) {
957 var parts = docs.trim().split("\n");
958 var firstLine = parts[0];
959 return markdown(firstLine);
960 }
961
926 function markdown(mdText) {962 function markdown(mdText) {
927 // TODO implement more963 // TODO implement more
928 return escapeHtml(mdText);964 return escapeHtml(mdText);