mirror of
https://github.com/jsdoc/jsdoc.git
synced 2025-12-08 19:46:11 +00:00
improvements from @dchambers to nav-building code (#813)
Squashed commit of the following:
commit 723349a9c90a005137d01e19012778f4dddb1d12
Author: dchambers <dominic.chambers@gmail.com>
Date: Fri Dec 5 13:14:13 2014 +0000
Moved an assignment within the corresponding guard, since it was superfluous unless the guard was triggered.
commit 872974656e7500c99daba64e7db31f14f9874c0d
Author: dchambers <dominic.chambers@gmail.com>
Date: Fri Dec 5 11:35:33 2014 +0000
Use four spaces for tabulation.
commit 5eaabcf84c5395aeeeff018ea042e73d710e2846
Author: dchambers <dominic.chambers@gmail.com>
Date: Mon Nov 24 18:15:36 2014 +0000
Attempt to fix remaining linting errors -- may not work as I'm unable to run the build locally on my own machine to verify.
commit 0137865ff4aa4e888533a217f2e6bb3b12b7fc87
Author: dchambers <dominic.chambers@gmail.com>
Date: Mon Nov 24 17:42:09 2014 +0000
Attempt to fix remaining linting errors -- may not work as I'm unable to run the build locally on my own machine to verify.
commit 7d80410d63e29837b436776b8983004c8b92ecb2
Author: dchambers <dominic.chambers@gmail.com>
Date: Mon Nov 24 17:17:51 2014 +0000
Removed trailing whitespace from 'publish.js'.
commit 773b785756f5ee6c32cbcb1742543c1a2671efe7
Author: Dominic Chambers <dominic.chambers@gmail.com>
Date: Tue Aug 26 09:58:50 2014 +0100
Ensure the title for classes defined within modules shows the thing
being documented as being a class rather than a module, as it currently
does for interfaces.
commit 9fc527d63aa6839fbae07f4b6db8dee027f6fc43
Author: Dominic Chambers <dominic.chambers@gmail.com>
Date: Tue Aug 26 09:51:10 2014 +0100
Remove the 'module:' prefix from index links to classes and interfaces
defined within modules.
commit 21e3e31f2499bbc9cb5f10c09cfaeb86d25ded9b
Author: Dominic Chambers <dominic.chambers@gmail.com>
Date: Tue Aug 26 09:43:13 2014 +0100
Removed duplicated code from the buildNav() function, where the version
of the code used is one where items are only written if they haven't
already been encountered, and a heading is only written when there are
items to appear beneath that heading.
Conflicts:
templates/default/publish.js
This commit is contained in:
parent
78ed79c49a
commit
ee2badcde2
@ -282,6 +282,35 @@ function attachModuleSymbols(doclets, modules) {
|
||||
});
|
||||
}
|
||||
|
||||
function buildMemberNav(items, itemHeading, itemsSeen) {
|
||||
var nav = '';
|
||||
|
||||
if (items.length) {
|
||||
var itemsNav = '';
|
||||
|
||||
items.forEach(function(item) {
|
||||
if ( !hasOwnProp.call(itemsSeen, item.longname) ) {
|
||||
itemsNav += '<li>' + linkto(item.longname, item.name.replace(/^module:/, '')) + '</li>';
|
||||
itemsSeen[item.longname] = true;
|
||||
}
|
||||
});
|
||||
|
||||
if (itemsNav !== '') {
|
||||
nav += '<h3>' + itemHeading + '</h3><ul>' + itemsNav + '</ul>';
|
||||
}
|
||||
}
|
||||
|
||||
return nav;
|
||||
}
|
||||
|
||||
function linktoTutorial(longName, name) {
|
||||
return tutoriallink(name);
|
||||
}
|
||||
|
||||
function linktoExternal(longName, name) {
|
||||
return linkto(longName, name.replace(/(^"|"$)/g, ''));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the navigation sidebar.
|
||||
* @param {object} members The members that will be used to create the sidebar.
|
||||
@ -298,104 +327,20 @@ function attachModuleSymbols(doclets, modules) {
|
||||
*/
|
||||
function buildNav(members) {
|
||||
var nav = '<h2><a href="index.html">Home</a></h2>',
|
||||
seen = {},
|
||||
hasClassList = false,
|
||||
classNav = '',
|
||||
globalNav = '';
|
||||
seen = {};
|
||||
|
||||
if (members.modules.length) {
|
||||
nav += '<h3>Modules</h3><ul>';
|
||||
members.modules.forEach(function(m) {
|
||||
if ( !hasOwnProp.call(seen, m.longname) ) {
|
||||
nav += '<li>' + linkto(m.longname, m.name) + '</li>';
|
||||
}
|
||||
seen[m.longname] = true;
|
||||
});
|
||||
|
||||
nav += '</ul>';
|
||||
}
|
||||
|
||||
if (members.externals.length) {
|
||||
nav += '<h3>Externals</h3><ul>';
|
||||
members.externals.forEach(function(e) {
|
||||
if ( !hasOwnProp.call(seen, e.longname) ) {
|
||||
nav += '<li>' + linkto( e.longname, e.name.replace(/(^"|"$)/g, '') ) + '</li>';
|
||||
}
|
||||
seen[e.longname] = true;
|
||||
});
|
||||
|
||||
nav += '</ul>';
|
||||
}
|
||||
|
||||
if (members.classes.length) {
|
||||
members.classes.forEach(function(c) {
|
||||
if ( !hasOwnProp.call(seen, c.longname) ) {
|
||||
classNav += '<li>' + linkto(c.longname, c.name) + '</li>';
|
||||
}
|
||||
seen[c.longname] = true;
|
||||
});
|
||||
|
||||
if (classNav !== '') {
|
||||
nav += '<h3>Classes</h3><ul>';
|
||||
nav += classNav;
|
||||
nav += '</ul>';
|
||||
}
|
||||
}
|
||||
|
||||
if (members.events.length) {
|
||||
nav += '<h3>Events</h3><ul>';
|
||||
members.events.forEach(function(e) {
|
||||
if ( !hasOwnProp.call(seen, e.longname) ) {
|
||||
nav += '<li>' + linkto(e.longname, e.name) + '</li>';
|
||||
}
|
||||
seen[e.longname] = true;
|
||||
});
|
||||
|
||||
nav += '</ul>';
|
||||
}
|
||||
|
||||
if (members.namespaces.length) {
|
||||
nav += '<h3>Namespaces</h3><ul>';
|
||||
members.namespaces.forEach(function(n) {
|
||||
if ( !hasOwnProp.call(seen, n.longname) ) {
|
||||
nav += '<li>' + linkto(n.longname, n.name) + '</li>';
|
||||
}
|
||||
seen[n.longname] = true;
|
||||
});
|
||||
|
||||
nav += '</ul>';
|
||||
}
|
||||
|
||||
if (members.mixins.length) {
|
||||
nav += '<h3>Mixins</h3><ul>';
|
||||
members.mixins.forEach(function(m) {
|
||||
if ( !hasOwnProp.call(seen, m.longname) ) {
|
||||
nav += '<li>' + linkto(m.longname, m.name) + '</li>';
|
||||
}
|
||||
seen[m.longname] = true;
|
||||
});
|
||||
|
||||
nav += '</ul>';
|
||||
}
|
||||
|
||||
if (members.tutorials.length) {
|
||||
nav += '<h3>Tutorials</h3><ul>';
|
||||
members.tutorials.forEach(function(t) {
|
||||
nav += '<li>' + tutoriallink(t.name) + '</li>';
|
||||
});
|
||||
|
||||
nav += '</ul>';
|
||||
}
|
||||
|
||||
if (members.interfaces.length) {
|
||||
nav += '<h3>Interfaces</h3><ul>';
|
||||
members.interfaces.forEach(function(i) {
|
||||
nav += '<li>' + linkto(i.longname, i.name) + '</li>';
|
||||
});
|
||||
nav += '</ul>';
|
||||
}
|
||||
nav += buildMemberNav(members.modules, 'Modules', {}, linkto);
|
||||
nav += buildMemberNav(members.externals, 'Externals', seen, linktoExternal);
|
||||
nav += buildMemberNav(members.classes, 'Classes', seen, linkto);
|
||||
nav += buildMemberNav(members.events, 'Events', seen, linkto);
|
||||
nav += buildMemberNav(members.namespaces, 'Namespaces', seen, linkto);
|
||||
nav += buildMemberNav(members.mixins, 'Mixins', seen, linkto);
|
||||
nav += buildMemberNav(members.tutorials, 'Tutorials', seen, linktoTutorial);
|
||||
nav += buildMemberNav(members.interfaces, 'Interfaces', seen, linkto);
|
||||
|
||||
if (members.globals.length) {
|
||||
var globalNav = '';
|
||||
|
||||
members.globals.forEach(function(g) {
|
||||
if ( g.kind !== 'typedef' && !hasOwnProp.call(seen, g.longname) ) {
|
||||
globalNav += '<li>' + linkto(g.longname, g.name) + '</li>';
|
||||
@ -628,16 +573,16 @@ exports.publish = function(taffyData, opts, tutorials) {
|
||||
var interfaces = taffy(members.interfaces);
|
||||
|
||||
Object.keys(helper.longnameToUrl).forEach(function(longname) {
|
||||
var myClasses = helper.find(classes, {longname: longname});
|
||||
if (myClasses.length) {
|
||||
generate('Class: ' + myClasses[0].name, myClasses, helper.longnameToUrl[longname]);
|
||||
}
|
||||
|
||||
var myModules = helper.find(modules, {longname: longname});
|
||||
if (myModules.length) {
|
||||
generate('Module: ' + myModules[0].name, myModules, helper.longnameToUrl[longname]);
|
||||
}
|
||||
|
||||
var myClasses = helper.find(classes, {longname: longname});
|
||||
if (myClasses.length) {
|
||||
generate('Class: ' + myClasses[0].name, myClasses, helper.longnameToUrl[longname]);
|
||||
}
|
||||
|
||||
var myNamespaces = helper.find(namespaces, {longname: longname});
|
||||
if (myNamespaces.length) {
|
||||
generate('Namespace: ' + myNamespaces[0].name, myNamespaces, helper.longnameToUrl[longname]);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user