diff --git a/config/jsdoc/api/template/publish.js b/config/jsdoc/api/template/publish.js index 4bc6c21445..8e9304cbd7 100644 --- a/config/jsdoc/api/template/publish.js +++ b/config/jsdoc/api/template/publish.js @@ -188,6 +188,12 @@ function attachModuleSymbols(doclets, modules) { }); } +function getPrettyName(longname) { + return longname + .split('~')[0] + .replace('module:', ''); +} + /** * Create the navigation sidebar. * @param {object} members The members that will be used to create the sidebar. @@ -206,10 +212,12 @@ function buildNav(members) { // merge namespaces and classes, then sort const merged = members.modules.concat(members.classes); merged.sort(function(a, b) { - if (a.longname > b.longname) { + const prettyNameA = getPrettyName(a.longname).toLowerCase(); + const prettyNameB = getPrettyName(b.longname).toLowerCase(); + if (prettyNameA > prettyNameB) { return 1; } - if (a.longname < b.longname) { + if (prettyNameA < prettyNameB) { return -1; } return 0; @@ -221,9 +229,7 @@ function buildNav(members) { nav.push({ type: 'class', longname: v.longname, - prettyname: v.longname - .split('~')[0] - .replace('module:', ''), + prettyname: getPrettyName(v.longname), name: v.name, module: find({ kind: 'module', @@ -269,13 +275,11 @@ function buildNav(members) { memberof: v.longname }); // only add modules that have more to show than just a single class - if (classes.length !== 1 && (classes.length + members.length + methods.length + typedefs.length + events.length > 0)) { + if (!classes.length || classes.length - 1 + members.length + methods.length + typedefs.length + events.length > 0) { nav.push({ type: 'module', longname: v.longname, - prettyname: v.longname - .split('~')[0] - .replace('module:', ''), + prettyname: getPrettyName(v.longname), name: v.name, members: members, methods: methods,