Some more cleanup

No need to sort beforehand and therefore sorting can be done at last too.
Also forEach is just fine, no need for underscore.

This changes the navigation default order for modules to be after classes
when the name is the same.
This commit is contained in:
Maximilian Krög
2020-02-27 23:47:22 +01:00
parent bc8499472c
commit e484eca1a1
+51 -53
View File
@@ -14,7 +14,6 @@ const path = require('jsdoc/lib/jsdoc/path');
const taffy = require('taffydb').taffy; const taffy = require('taffydb').taffy;
const handle = require('jsdoc/lib/jsdoc/util/error').handle; const handle = require('jsdoc/lib/jsdoc/util/error').handle;
const helper = require('jsdoc/lib/jsdoc/util/templateHelper'); const helper = require('jsdoc/lib/jsdoc/util/templateHelper');
const _ = require('underscore');
const htmlsafe = helper.htmlsafe; const htmlsafe = helper.htmlsafe;
const linkto = helper.linkto; const linkto = helper.linkto;
const resolveAuthorLinks = helper.resolveAuthorLinks; const resolveAuthorLinks = helper.resolveAuthorLinks;
@@ -211,23 +210,9 @@ function getPrettyName(doclet) {
*/ */
function buildNav(members) { function buildNav(members) {
const nav = []; const nav = [];
// merge namespaces and classes, then sort members.classes.forEach(function(v) {
const merged = members.modules.concat(members.classes);
merged.sort(function(a, b) {
const prettyNameA = getPrettyName(a).toLowerCase();
const prettyNameB = getPrettyName(b).toLowerCase();
if (prettyNameA > prettyNameB) {
return 1;
}
if (prettyNameA < prettyNameB) {
return -1;
}
return 0;
});
_.each(merged, function(v) {
// exclude interfaces from sidebar // exclude interfaces from sidebar
if (v.interface !== true && v.kind === 'class') { if (v.interface !== true) {
nav.push({ nav.push({
type: 'class', type: 'class',
longname: v.longname, longname: v.longname,
@@ -255,44 +240,57 @@ function buildNav(members) {
memberof: v.longname memberof: v.longname
}) })
}); });
} else if (v.kind == 'module') {
const classes = find({
kind: 'class',
memberof: v.longname
});
const members = find({
kind: 'member',
memberof: v.longname
});
const methods = find({
kind: 'function',
memberof: v.longname
});
const typedefs = find({
kind: 'typedef',
memberof: v.longname
});
const events = find({
kind: 'event',
memberof: v.longname
});
// Only add modules that contain more than just classes with their
// associated Options typedef
if (typedefs.length > classes.length || members.length + methods.length > 0) {
nav.push({
type: 'module',
longname: v.longname,
prettyname: getPrettyName(v),
name: v.name,
members: members,
methods: methods,
typedefs: typedefs,
fires: v.fires,
events: events
});
}
} }
}); });
members.modules.forEach(function(v) {
const classes = find({
kind: 'class',
memberof: v.longname
});
const members = find({
kind: 'member',
memberof: v.longname
});
const methods = find({
kind: 'function',
memberof: v.longname
});
const typedefs = find({
kind: 'typedef',
memberof: v.longname
});
const events = find({
kind: 'event',
memberof: v.longname
});
// Only add modules that contain more than just classes with their
// associated Options typedef
if (typedefs.length > classes.length || members.length + methods.length > 0) {
nav.push({
type: 'module',
longname: v.longname,
prettyname: getPrettyName(v),
name: v.name,
members: members,
methods: methods,
typedefs: typedefs,
fires: v.fires,
events: events
});
}
});
nav.sort(function(a, b) {
const prettyNameA = a.prettyname.toLowerCase();
const prettyNameB = b.prettyname.toLowerCase();
if (prettyNameA > prettyNameB) {
return 1;
}
if (prettyNameA < prettyNameB) {
return -1;
}
return 0;
});
return nav; return nav;
} }