Inline events and also list method events with the class

This commit is contained in:
Andreas Hocevar
2014-05-05 09:35:33 -05:00
parent 52444b1366
commit b1126c9373
5 changed files with 91 additions and 22 deletions

47
apidoc/plugins/events.js Normal file
View File

@@ -0,0 +1,47 @@
var events = {};
var classes = {};
exports.handlers = {
newDoclet: function(e) {
var doclet = e.doclet;
var cls;
if (doclet.kind == 'event') {
cls = doclet.longname.split('#')[0];
if (!(cls in events)) {
events[cls] = [];
}
events[cls].push(doclet.longname);
} else if (doclet.kind == 'class') {
classes[doclet.longname] = doclet;
}
},
parseComplete: function(e) {
var doclets = e.doclets;
var eventClass, doclet, i, ii, j, jj, event, fires;
for (i = 0, ii = doclets.length - 1; i < ii; ++i) {
doclet = doclets[i];
if (doclet.fires) {
if (doclet.kind == 'class') {
fires = [];
for (j = 0, jj = doclet.fires.length; j < jj; ++j) {
event = doclet.fires[j].replace('event:', '');
if (events[event]) {
fires.push.apply(fires, events[event]);
}
}
doclet.fires = fires;
} else {
eventClass = classes[doclet.longname.split('#')[0]];
if (!(fires in eventClass)) {
eventClass.fires = [];
}
eventClass.fires.push.apply(eventClass.fires, doclet.fires);
}
}
}
}
};