authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2019-12-04 20:03:44+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-12-04 14:14:47-05:00
log137cb32f5e586bdd74dcc65b734b54d26080dfee
tree2ebe059f37caf691e43d76f426ecb1544787f434
parent38791ac616069963fd808ec724161b93cbc564c1

add docs for function parameters


2 files changed, 61 insertions(+), 0 deletions(-)

lib/std/special/docs/index.html+4
...@@ -485,6 +485,10 @@...@@ -485,6 +485,10 @@
485 </p>485 </p>
486 </div>486 </div>
487 <div id="tldDocs" class="hidden"></div>487 <div id="tldDocs" class="hidden"></div>
488 <div id="sectParams" class="hidden">
489 <h2>Parameters</h2>
490 <div id="listParams"></div>
491 </div>
488 <div id="sectFnErrors" class="hidden">492 <div id="sectFnErrors" class="hidden">
489 <h2>Errors</h2>493 <h2>Errors</h2>
490 <div id="fnErrorsAnyError">494 <div id="fnErrorsAnyError">
lib/std/special/docs/main.js+57
...@@ -20,6 +20,8 @@...@@ -20,6 +20,8 @@
20 var domListValues = document.getElementById("listValues");20 var domListValues = document.getElementById("listValues");
21 var domFnProto = document.getElementById("fnProto");21 var domFnProto = document.getElementById("fnProto");
22 var domFnProtoCode = document.getElementById("fnProtoCode");22 var domFnProtoCode = document.getElementById("fnProtoCode");
23 var domSectParams = document.getElementById("sectParams");
24 var domListParams = document.getElementById("listParams");
23 var domTldDocs = document.getElementById("tldDocs");25 var domTldDocs = document.getElementById("tldDocs");
24 var domSectFnErrors = document.getElementById("sectFnErrors");26 var domSectFnErrors = document.getElementById("sectFnErrors");
25 var domListFnErrors = document.getElementById("listFnErrors");27 var domListFnErrors = document.getElementById("listFnErrors");
...@@ -101,6 +103,7 @@...@@ -101,6 +103,7 @@
101 function render() {103 function render() {
102 domStatus.classList.add("hidden");104 domStatus.classList.add("hidden");
103 domFnProto.classList.add("hidden");105 domFnProto.classList.add("hidden");
106 domSectParams.classList.add("hidden");
104 domTldDocs.classList.add("hidden");107 domTldDocs.classList.add("hidden");
105 domSectPkgs.classList.add("hidden");108 domSectPkgs.classList.add("hidden");
106 domSectTypes.classList.add("hidden");109 domSectTypes.classList.add("hidden");
...@@ -226,6 +229,8 @@...@@ -226,6 +229,8 @@
226 }229 }
227230
228 var typeObj = zigAnalysis.types[fnDecl.type];231 var typeObj = zigAnalysis.types[fnDecl.type];
232 renderFnParamDocs(fnDecl, typeObj);
233
229 var errSetTypeIndex = null;234 var errSetTypeIndex = null;
230 if (typeObj.ret != null) {235 if (typeObj.ret != null) {
231 var retType = zigAnalysis.types[typeObj.ret];236 var retType = zigAnalysis.types[typeObj.ret];
...@@ -279,6 +284,58 @@...@@ -279,6 +284,58 @@
279 domFnProto.classList.remove("hidden");284 domFnProto.classList.remove("hidden");
280 }285 }
281286
287 function renderFnParamDocs(fnDecl, typeObj) {
288 var docCount = 0;
289
290 var fnObj = zigAnalysis.fns[fnDecl.value];
291 var fnNode = zigAnalysis.astNodes[fnObj.src];
292 var fields = fnNode.fields;
293 var isVarArgs = fnNode.varArgs;
294
295 for (var i = 0; i < fields.length; i += 1) {
296 var field = fields[i];
297 var fieldNode = zigAnalysis.astNodes[field];
298 if (fieldNode.docs != null) {
299 docCount += 1;
300 }
301 }
302 if (docCount == 0) {
303 return;
304 }
305
306 resizeDomList(domListParams, docCount, '<div></div>');
307 var domIndex = 0;
308
309 for (var i = 0; i < fields.length; i += 1) {
310 var field = fields[i];
311 var fieldNode = zigAnalysis.astNodes[field];
312 if (fieldNode.docs == null) {
313 continue;
314 }
315 var divDom = domListParams.children[domIndex];
316 domIndex += 1;
317 var argTypeIndex = typeObj.args[i];
318
319 var html = '<pre>' + escapeHtml(fieldNode.name) + ": ";
320 if (isVarArgs && i === typeObj.args.length - 1) {
321 html += '...';
322 } else if (argTypeIndex != null) {
323 html += typeIndexName(argTypeIndex, true, true);
324 } else {
325 html += '<span class="tok-kw">var</span>';
326 }
327
328 html += ',</pre>';
329
330 var docs = fieldNode.docs;
331 if (docs != null) {
332 html += markdown(docs);
333 }
334 divDom.innerHTML = html;
335 }
336 domSectParams.classList.remove("hidden");
337 }
338
282 function renderNav() {339 function renderNav() {
283 var len = curNav.pkgNames.length + curNav.declNames.length;340 var len = curNav.pkgNames.length + curNav.declNames.length;
284 resizeDomList(domListNav, len, '<li><a href="#"></a></li>');341 resizeDomList(domListNav, len, '<li><a href="#"></a></li>');