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
+1
View File
@@ -25,6 +25,7 @@
"apidoc/plugins/typedefs", "apidoc/plugins/typedefs",
"apidoc/plugins/api", "apidoc/plugins/api",
"apidoc/plugins/todo", "apidoc/plugins/todo",
"apidoc/plugins/events",
"apidoc/plugins/observable" "apidoc/plugins/observable"
], ],
"markdown": { "markdown": {
+47
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);
}
}
}
}
};
+27 -18
View File
@@ -1,27 +1,36 @@
<?js <?js
var self = this; var self = this;
docs.forEach(function(doc, i) { docs.forEach(function(doc, i) {
var observables, fires; var observables, fires;
if (doc.kind == 'class') { if (doc.kind == 'class') {
observables = doc.observables || []; observables = doc.observables || [];
fires = doc.fires || []; fires = doc.fires || [];
var parents = doc.augments; var parents = [].concat(doc.augments);
if (parents) { var parent = parents.pop();
for (var i = parents.length - 1; i >= 0; --i) { while (parent) {
var parent = parents[i]; parent = self.find({longname: parent})[0];
while (parent) { if (parent) {
parent = self.find({longname: parent})[0]; if (parent.observables) {
if (!parent) { break; } parent.observables.forEach(function(o) {
if (parent.observables) { if (observables.indexOf(o) == -1) {
observables = observables.concat(parent.observables); observables.push(o);
} }
if (parent.fires) { });
fires = fires.concat(parent.fires); }
} if (parent.fires) {
parent = parent.augments; parent.fires.forEach(function(f) {
if (fires.indexOf(f) == -1) {
fires.push(f);
}
});
}
if (parent.augments) {
parents.push.apply(parents, parent.augments);
} }
} }
parent = parents.pop();
} }
observables.sort(); observables.sort();
observables.forEach(function(o) { observables.forEach(function(o) {
@@ -146,10 +155,10 @@
<?js } ?> <?js } ?>
<?js if (fires && fires.length) { ?> <?js if (fires && fires.length) { ?>
<h3 class="subsection-title">Fires</h3> <h3 class="subsection-title">Fires</h3>
<ul><?js fires.forEach(function(f) { ?> <ul><?js fires.forEach(function(f) { ?>
<?js= self.partial('fires.tmpl', self.linkto(f, f.split('event:')[1]) ) ?> <?js= self.partial('fires.tmpl', f) ?>
<?js }); ?></ul> <?js }); ?></ul>
<?js } ?> <?js } ?>
<?js <?js
+14 -2
View File
@@ -1,4 +1,16 @@
<?js var data = obj; ?> <?js
var data = obj;
var self = this;
var parts = data.split(/#?event:/);
var link = self.linkto(parts[0], parts[0]);
?>
<li> <li>
<?js= data ?> <code><?js= parts[1] ?></code>
<?js if (link !== parts[0]) { ?>(<?js= self.linkto(parts[0], parts[0]) ?>)<?js } ?>
<?js var eventCls = self.find({longname: data})[0];
if (eventCls && eventCls.description) { ?>
<?js= (eventCls.description) ?>
<?js } else { ?>
<p>
<?js } ?>
</li> </li>
+2 -2
View File
@@ -40,10 +40,10 @@ var self = this;
<?js= this.partial('details.tmpl', data) ?> <?js= this.partial('details.tmpl', data) ?>
<?js if (data.fires && fires.length) { ?> <?js if (data.kind !== 'class' && data.fires && fires.length) { ?>
<h5>Fires:</h5> <h5>Fires:</h5>
<ul><?js fires.forEach(function(f) { ?> <ul><?js fires.forEach(function(f) { ?>
<?js= self.partial('fires.tmpl', self.linkto(f.replace('event:', '')) ) ?> <?js= self.partial('fires.tmpl', f) ?>
<?js }); ?></ul> <?js }); ?></ul>
<?js } ?> <?js } ?>