Code coverage report for master/lib/jsdoc/plugins.js

Statements: 80.95% (17 / 21)      Branches: 50% (5 / 10)      Functions: 100% (3 / 3)      Lines: 80.95% (17 / 21)      Ignored: none     

All files » master/lib/jsdoc/ » plugins.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54              1 1   1 9 21       1 8   8 8   8 9       9 9       9 1       9                     9          
/*global app: true */
/**
 * Utility functions to support the JSDoc plugin framework.
 * @module jsdoc/plugins
 */
'use strict';
 
var logger = require('jsdoc/util/logger');
var path = require('jsdoc/path');
 
function addHandlers(handlers, parser) {
    Object.keys(handlers).forEach(function(eventName) {
        parser.on(eventName, handlers[eventName]);
    });
}
 
exports.installPlugins = function(plugins, parser) {
    var dictionary = require('jsdoc/tag/dictionary');
 
    var eventName;
    var plugin;
 
    for (var i = 0, l = plugins.length; i < l; i++) {
        plugin = require(plugins[i]);
 
        // allow user-defined plugins to...
        // ...register event handlers
        Eif (plugin.handlers) {
            addHandlers(plugin.handlers, parser);
        }
 
        // ...define tags
        if (plugin.defineTags) {
            plugin.defineTags(dictionary);
        }
 
        // ...add a Rhino node visitor (deprecated in JSDoc 3.3)
        Iif (plugin.nodeVisitor) {
            if ( !parser.addNodeVisitor ) {
                logger.error('Unable to add the Rhino node visitor from %s, because JSDoc ' +
                    'is not using the Rhino JavaScript parser.', plugins[i]);
            }
            else {
                parser.addNodeVisitor(plugin.nodeVisitor);
            }
        }
 
        // ...add a Mozilla Parser API node visitor
        Iif (plugin.astNodeVisitor) {
            parser.addAstNodeVisitor(plugin.astNodeVisitor);
        }
    }
};