Skip to content

Commit d15a71a

Browse files
committed
generated docs: clean up type names and param names
closes #3410
1 parent 6cbb732 commit d15a71a

File tree

1 file changed

+33
-11
lines changed

1 file changed

+33
-11
lines changed

lib/std/special/docs/main.js

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343

4444
var typeKinds = indexTypeKinds();
4545
var typeTypeId = findTypeTypeId();
46+
var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 };
4647

4748
// for each package, is an array with packages to get to this one
4849
var canonPkgPaths = computeCanonicalPackagePaths();
@@ -378,21 +379,38 @@
378379

379380
function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl) {
380381
var typeObj = zigAnalysis.types[typeIndex];
382+
var declNameOk = declCanRepresentTypeKind(typeObj.kind);
381383
if (wantLink) {
382384
var declIndex = getCanonTypeDecl(typeIndex);
383385
var declPath = getCanonDeclPath(declIndex);
384-
var haveLink = declPath != null;
385-
var typeNameHtml = typeName(typeObj, true, !haveLink, fnDecl, linkFnNameDecl);
386-
if (haveLink) {
387-
return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + typeNameHtml + '</a>';
386+
if (declPath == null) {
387+
return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl);
388+
}
389+
var name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ?
390+
declPath.declNames[declPath.declNames.length - 1] :
391+
typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
392+
if (wantLink && wantHtml) {
393+
return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + name + '</a>';
388394
} else {
389-
return typeNameHtml;
395+
return name;
390396
}
391397
} else {
392398
return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
393399
}
394400
}
395401

402+
function shouldSkipParamName(typeIndex, paramName) {
403+
var typeObj = zigAnalysis.types[typeIndex];
404+
if (typeObj.kind === typeKinds.Pointer && getPtrSize(typeObj) === pointerSizeEnum.One) {
405+
typeIndex = typeObj.elem;
406+
}
407+
return typeIndexName(typeIndex, false, true).toLowerCase() === paramName;
408+
}
409+
410+
function getPtrSize(typeObj) {
411+
return (typeObj.len == null) ? pointerSizeEnum.One : typeObj.len;
412+
}
413+
396414
function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl) {
397415
switch (typeObj.kind) {
398416
case typeKinds.Array:
@@ -408,17 +426,17 @@
408426
case typeKinds.Pointer:
409427
var name = "";
410428
switch (typeObj.len) {
411-
case 0:
429+
case pointerSizeEnum.One:
412430
default:
413431
name += "*";
414432
break;
415-
case 1:
433+
case pointerSizeEnum.Many:
416434
name += "[*]";
417435
break;
418-
case 2:
436+
case pointerSizeEnum.Slice:
419437
name += "[]";
420438
break;
421-
case 3:
439+
case pointerSizeEnum.C:
422440
name += "[*c]";
423441
break;
424442
}
@@ -562,16 +580,20 @@
562580
payloadHtml += ', ';
563581
}
564582

583+
var argTypeIndex = typeObj.args[i];
584+
565585
if (fnDecl != null && zigAnalysis.astNodes[fnDecl.src].fields != null) {
566586
var paramDeclIndex = zigAnalysis.astNodes[fnDecl.src].fields[i];
567587
var paramName = zigAnalysis.astNodes[paramDeclIndex].name;
568588

569589
if (paramName != null) {
570-
payloadHtml += paramName + ': ';
590+
// skip if it matches the type name
591+
if (argTypeIndex == null || !shouldSkipParamName(argTypeIndex, paramName)) {
592+
payloadHtml += paramName + ': ';
593+
}
571594
}
572595
}
573596

574-
var argTypeIndex = typeObj.args[i];
575597
if (argTypeIndex != null) {
576598
payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
577599
} else if (wantHtml) {

0 commit comments

Comments
 (0)