mirror of
https://github.com/jsdoc/jsdoc.git
synced 2025-12-08 19:46:11 +00:00
allow Visitor instances to be created before Parser instances (#923)
This commit is contained in:
parent
17715c8434
commit
ea773af2ed
@ -70,9 +70,11 @@ var Parser = exports.Parser = function(builderInstance, visitorInstance, walkerI
|
||||
this.clear();
|
||||
|
||||
this._astBuilder = builderInstance || new (require('jsdoc/src/astbuilder')).AstBuilder();
|
||||
this._visitor = visitorInstance || new (require('jsdoc/src/visitor')).Visitor(this);
|
||||
this._visitor = visitorInstance || new (require('jsdoc/src/visitor')).Visitor();
|
||||
this._walker = walkerInstance || new (require('jsdoc/src/walker')).Walker();
|
||||
|
||||
this._visitor.setParser(this);
|
||||
|
||||
Object.defineProperties(this, {
|
||||
astBuilder: {
|
||||
get: function() {
|
||||
|
||||
@ -143,8 +143,8 @@ function JsdocCommentFound(comment, filename) {
|
||||
}
|
||||
|
||||
// TODO: docs
|
||||
var Visitor = exports.Visitor = function(parser) {
|
||||
this._parser = parser;
|
||||
var Visitor = exports.Visitor = function() {
|
||||
this._parser = null;
|
||||
|
||||
// Mozilla Parser API node visitors added by plugins
|
||||
this._nodeVisitors = [];
|
||||
@ -155,6 +155,15 @@ var Visitor = exports.Visitor = function(parser) {
|
||||
];
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the parser instance that visitors can use.
|
||||
*
|
||||
* @param {module:jsdoc/src/parser.Parser} parser - The parser instance.
|
||||
*/
|
||||
Visitor.prototype.setParser = function(parser) {
|
||||
this._parser = parser;
|
||||
};
|
||||
|
||||
// TODO: docs
|
||||
Visitor.prototype.addAstNodeVisitor = function(visitor) {
|
||||
this._nodeVisitors.push(visitor);
|
||||
|
||||
@ -2,13 +2,13 @@
|
||||
'use strict';
|
||||
|
||||
// TODO: docs
|
||||
var Visitor = exports.Visitor = function(parser) {
|
||||
var Visitor = exports.Visitor = function() {
|
||||
var runtime = require('jsdoc/util/runtime');
|
||||
if ( !runtime.isRhino() ) {
|
||||
throw new Error('You must run JSDoc on Mozilla Rhino to use the Rhino node visitor.');
|
||||
}
|
||||
|
||||
Visitor.super_.call(this, parser);
|
||||
Visitor.super_.call(this);
|
||||
|
||||
// Rhino node visitors added by plugins (deprecated in JSDoc 3.3)
|
||||
this._rhinoNodeVisitors = [];
|
||||
|
||||
@ -44,7 +44,9 @@ describe('jsdoc/src/parser', function() {
|
||||
|
||||
it('should accept an astBuilder, visitor, and walker as arguments', function() {
|
||||
var astBuilder = {};
|
||||
var visitor = {};
|
||||
var visitor = {
|
||||
setParser: function() {}
|
||||
};
|
||||
var walker = {};
|
||||
|
||||
var myParser = new jsdoc.src.parser.Parser(astBuilder, visitor, walker);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user