allow newDoclet event handlers to modify doclets (#584)

This commit is contained in:
Jeff Williams 2014-02-23 20:34:38 -08:00
parent 4e3e4a0151
commit 2442df893d
2 changed files with 27 additions and 2 deletions

View File

@ -190,8 +190,8 @@ exports.attachTo = function(parser) {
e = { doclet: newDoclet };
parser.emit('newDoclet', e);
if ( !e.defaultPrevented && !filter(newDoclet) ) {
parser.addResult(newDoclet);
if ( !e.defaultPrevented && !filter(e.doclet) ) {
parser.addResult(e.doclet);
}
}
}

View File

@ -126,6 +126,31 @@ describe("jsdoc/src/parser", function() {
expect(spy).toHaveBeenCalled();
});
it('should fire "newDoclet" events after creating a new doclet', function() {
var spy = jasmine.createSpy();
var sourceCode = 'javascript:var foo = 1';
parser.on('symbolFound', spy).parse(sourceCode);
expect(spy).toHaveBeenCalled();
});
it('should allow "newDoclet" handlers to modify doclets', function() {
var results;
var sourceCode = 'javascript:/** @class */function Foo() {}';
function handler(e) {
var doop = require('jsdoc/util/doop');
e.doclet = doop(e.doclet);
e.doclet.foo = 'bar';
}
require('jsdoc/src/handlers').attachTo(parser);
parser.on('newDoclet', handler).parse(sourceCode);
results = parser.results();
expect(results[0].foo).toBe('bar');
});
it('should call AST node visitors', function() {
var Syntax = require('jsdoc/src/syntax').Syntax;