From 08d09ecbaa07564bf3cf6a62e0be4c41b355d23b Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Thu, 25 Aug 2011 22:23:10 -0700 Subject: feat(docs): add support for events --- docs/spec/ngdocSpec.js | 5 ++++- docs/src/ngdoc.js | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/docs/spec/ngdocSpec.js b/docs/spec/ngdocSpec.js index f16bef46..44d8dc3c 100644 --- a/docs/spec/ngdocSpec.js +++ b/docs/spec/ngdocSpec.js @@ -252,11 +252,14 @@ describe('ngdoc', function(){ var methodB = new Doc({name: 'methodB', methodOf: 'angular.service.abc'}); var propA = new Doc({name: 'propA', propertyOf: 'angular.service.abc'}); var propB = new Doc({name: 'propB', propertyOf: 'angular.service.abc'}); - var docs = [methodB, methodA, propB, propA, parent]; // keep wrong order; + var eventA = new Doc({name: 'eventA', eventOf: 'angular.service.abc'}); + var eventB = new Doc({name: 'eventB', eventOf: 'angular.service.abc'}); + var docs = [methodB, methodA, eventB, eventA, propA, propB, parent]; // keep wrong order; ngdoc.merge(docs); expect(docs.length).toEqual(1); expect(docs[0].id).toEqual('angular.service.abc'); expect(docs[0].methods).toEqual([methodA, methodB]); + expect(docs[0].events).toEqual([eventA, eventB]); expect(docs[0].properties).toEqual([propA, propB]); }); diff --git a/docs/src/ngdoc.js b/docs/src/ngdoc.js index 8fcf3cd5..a9abe7a6 100644 --- a/docs/src/ngdoc.js +++ b/docs/src/ngdoc.js @@ -29,6 +29,7 @@ function Doc(text, file, line) { this.param = this.param || []; this.properties = this.properties || []; this.methods = this.methods || []; + this.events = this.events || []; this.links = this.links || []; } Doc.METADATA_IGNORE = (function(){ @@ -217,6 +218,10 @@ Doc.prototype = { description: self.markdown(text.replace(match[0], match[4])) }; self.properties.push(property); + } else if(atName == 'eventType') { + var match = text.match(/^([^\s]*)\s+on\s+([\S\s]*)/); + self.type = match[1]; + self.source = match[2]; } else { self[atName] = text; } @@ -525,6 +530,18 @@ Doc.prototype = { dom.h('Example', property.example, dom.html); }); }); + dom.h('Events', this.events, function(event){ + var signature = (event.param || []).map(property('name')); + dom.h(event.type + ' ' + + event.shortName + '(' + signature.join(', ') + ') on ' + + event.source, event, function(){ + dom.html(event.description); + event.html_usage_parameters(dom); + self.html_usage_this(dom); + + dom.h('Example', event.example, dom.html); + }); + }); }, parameters: function(dom, separator, skipFirst, prefix) { @@ -717,7 +734,7 @@ function merge(docs){ }); // merge into parents - if (findParent(doc, 'method') || findParent(doc, 'property')) { + if (findParent(doc, 'method') || findParent(doc, 'property') || findParent(doc, 'event')) { docs.splice(i, 1); } else { i++; -- cgit v1.2.3