1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | 'use strict';
|
7 |
|
8 | var logger = require('jsdoc/util/logger');
|
9 | var path = require('jsdoc/path');
|
10 |
|
11 | function addHandlers(handlers, parser) {
|
12 | Object.keys(handlers).forEach(function(eventName) {
|
13 | parser.on(eventName, handlers[eventName]);
|
14 | });
|
15 | }
|
16 |
|
17 | exports.installPlugins = function(plugins, parser) {
|
18 | var dictionary = require('jsdoc/tag/dictionary');
|
19 |
|
20 | var eventName;
|
21 | var plugin;
|
22 |
|
23 | for (var i = 0, l = plugins.length; i < l; i++) {
|
24 | plugin = require(plugins[i]);
|
25 |
|
26 |
|
27 |
|
28 | if (plugin.handlers) {
|
29 | addHandlers(plugin.handlers, parser);
|
30 | }
|
31 |
|
32 |
|
33 | if (plugin.defineTags) {
|
34 | plugin.defineTags(dictionary);
|
35 | }
|
36 |
|
37 |
|
38 | if (plugin.nodeVisitor) {
|
39 | if ( !parser.addNodeVisitor ) {
|
40 | logger.error('Unable to add the Rhino node visitor from %s, because JSDoc ' +
|
41 | 'is not using the Rhino JavaScript parser.', plugins[i]);
|
42 | }
|
43 | else {
|
44 | parser.addNodeVisitor(plugin.nodeVisitor);
|
45 | }
|
46 | }
|
47 |
|
48 |
|
49 | if (plugin.astNodeVisitor) {
|
50 | parser.addAstNodeVisitor(plugin.astNodeVisitor);
|
51 | }
|
52 | }
|
53 | };
|