generated docs: clean up type names and param names

closes #3410
This commit is contained in:
Andrew Kelley 2019-10-10 15:42:40 -04:00
parent 6cbb732b59
commit d15a71afc9
No known key found for this signature in database
GPG Key ID: 7C5F548F728501A9

View File

@ -43,6 +43,7 @@
var typeKinds = indexTypeKinds();
var typeTypeId = findTypeTypeId();
var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 };
// for each package, is an array with packages to get to this one
var canonPkgPaths = computeCanonicalPackagePaths();
@ -378,21 +379,38 @@
function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl) {
var typeObj = zigAnalysis.types[typeIndex];
var declNameOk = declCanRepresentTypeKind(typeObj.kind);
if (wantLink) {
var declIndex = getCanonTypeDecl(typeIndex);
var declPath = getCanonDeclPath(declIndex);
var haveLink = declPath != null;
var typeNameHtml = typeName(typeObj, true, !haveLink, fnDecl, linkFnNameDecl);
if (haveLink) {
return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + typeNameHtml + '</a>';
if (declPath == null) {
return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl);
}
var name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ?
declPath.declNames[declPath.declNames.length - 1] :
typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
if (wantLink && wantHtml) {
return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + name + '</a>';
} else {
return typeNameHtml;
return name;
}
} else {
return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
}
}
function shouldSkipParamName(typeIndex, paramName) {
var typeObj = zigAnalysis.types[typeIndex];
if (typeObj.kind === typeKinds.Pointer && getPtrSize(typeObj) === pointerSizeEnum.One) {
typeIndex = typeObj.elem;
}
return typeIndexName(typeIndex, false, true).toLowerCase() === paramName;
}
function getPtrSize(typeObj) {
return (typeObj.len == null) ? pointerSizeEnum.One : typeObj.len;
}
function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl) {
switch (typeObj.kind) {
case typeKinds.Array:
@ -408,17 +426,17 @@
case typeKinds.Pointer:
var name = "";
switch (typeObj.len) {
case 0:
case pointerSizeEnum.One:
default:
name += "*";
break;
case 1:
case pointerSizeEnum.Many:
name += "[*]";
break;
case 2:
case pointerSizeEnum.Slice:
name += "[]";
break;
case 3:
case pointerSizeEnum.C:
name += "[*c]";
break;
}
@ -562,16 +580,20 @@
payloadHtml += ', ';
}
var argTypeIndex = typeObj.args[i];
if (fnDecl != null && zigAnalysis.astNodes[fnDecl.src].fields != null) {
var paramDeclIndex = zigAnalysis.astNodes[fnDecl.src].fields[i];
var paramName = zigAnalysis.astNodes[paramDeclIndex].name;
if (paramName != null) {
payloadHtml += paramName + ': ';
// skip if it matches the type name
if (argTypeIndex == null || !shouldSkipParamName(argTypeIndex, paramName)) {
payloadHtml += paramName + ': ';
}
}
}
var argTypeIndex = typeObj.args[i];
if (argTypeIndex != null) {
payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
} else if (wantHtml) {