type2docfx
Version:
A tool to convert json format output from TypeDoc to schema driven reference model for DocFx to consume.
81 lines • 2.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateTOC = void 0;
var constants_1 = require("./common/constants");
function generateItems(element) {
var result;
var itemsDetails = [];
result = {
uid: element.uid,
name: element.name.split('(')[0],
items: itemsDetails
};
if (!element.children || element.children.length === 0) {
if (constants_1.setOfTopLevelItems.has(element.type)) {
return result;
}
return null;
}
var children = element.children;
if (children.length > 1) {
children = children.sort(sortTOC);
}
children.forEach(function (child) {
var items = generateItems(child);
if (items) {
itemsDetails.push(items);
}
});
return result;
}
function generateTOC(elements, packageUid) {
var itemsDetails = [];
if (elements) {
if (elements.length > 1) {
elements = elements.sort(sortTOC);
}
elements.forEach(function (element) {
var items = generateItems(element);
if (items) {
itemsDetails.push(items);
}
});
}
if (itemsDetails.length === 0) {
itemsDetails = null;
}
else {
changeTocToOverview(itemsDetails, packageUid);
}
return [{
name: packageUid,
items: itemsDetails
}];
}
exports.generateTOC = generateTOC;
function changeTocToOverview(items, uid) {
items.splice(0, 0, {
name: "Overview",
uid: uid
});
for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {
var item = items_1[_i];
if (item.items && item.items.length > 0) {
var uid_1 = item.uid;
delete item.uid;
changeTocToOverview(item.items, uid_1);
}
}
}
function sortTOC(a, b) {
var nameA = a.name.toUpperCase();
var nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
return 0;
}
//# sourceMappingURL=tocGenerator.js.map