type2docfx
Version:
A tool to convert json format output from TypeDoc to universal reference model for DocFx to consume.
82 lines (81 loc) • 2.53 kB
JavaScript
;
exports.__esModule = true;
var flags_1 = require("./common/flags");
function generateToc(elements, packageUid) {
var result = [];
var previousUid = null;
if (elements) {
var tocs = elements;
if (flags_1.flags.enableAlphabetOrder) {
tocs = elements.sort(sortToc);
}
var dictModuleName_1 = {};
tocs.forEach(function (element) {
if (element.uid.indexOf('constructor') >= 0 || element.uid === previousUid) {
return;
}
previousUid = element.uid;
if (flags_1.flags.hasModule) {
var secondLevelToc = {
uid: element.uid,
name: element.name.split('(')[0],
items: []
};
if (element.module) {
if (!dictModuleName_1[element.module]) {
dictModuleName_1[element.module] = {
uid: element.package + "." + element.module.replace(/\//g, '.'),
name: element.module,
items: []
};
result.push(dictModuleName_1[element.module]);
}
dictModuleName_1[element.module].items.push(secondLevelToc);
}
else {
result.push(secondLevelToc);
}
}
else {
result.push({
uid: element.uid,
name: element.name.split('(')[0],
items: []
});
}
});
}
return [{
uid: packageUid,
name: packageUid,
items: result
}];
}
exports.generateToc = generateToc;
function sortToc(a, b) {
if (!a.module && b.module) {
return 1;
}
if (a.module && !b.module) {
return -1;
}
if (a.module && b.module) {
var moduleNameA = a.module.toUpperCase();
var moduleNameB = b.module.toUpperCase();
if (moduleNameA < moduleNameB) {
return -1;
}
if (moduleNameA > moduleNameB) {
return 1;
}
}
var nameA = a.name.toUpperCase();
var nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
return 0;
}