UNPKG

1.49 kBJavaScriptView Raw
1/*global app: true */
2/**
3 * Utility functions to support the JSDoc plugin framework.
4 * @module jsdoc/plugins
5 */
6'use strict';
7
8var logger = require('jsdoc/util/logger');
9var path = require('jsdoc/path');
10
11function addHandlers(handlers, parser) {
12 Object.keys(handlers).forEach(function(eventName) {
13 parser.on(eventName, handlers[eventName]);
14 });
15}
16
17exports.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 // allow user-defined plugins to...
27 // ...register event handlers
28 if (plugin.handlers) {
29 addHandlers(plugin.handlers, parser);
30 }
31
32 // ...define tags
33 if (plugin.defineTags) {
34 plugin.defineTags(dictionary);
35 }
36
37 // ...add a Rhino node visitor (deprecated in JSDoc 3.3)
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 // ...add a Mozilla Parser API node visitor
49 if (plugin.astNodeVisitor) {
50 parser.addAstNodeVisitor(plugin.astNodeVisitor);
51 }
52 }
53};