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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user