plugins.js 900 B

1234567891011121314151617181920212223242526272829303132333435
  1. /**
  2. * Utility functions to support the JSDoc plugin framework.
  3. * @module jsdoc/plugins
  4. */
  5. const dictionary = require('jsdoc/tag/dictionary');
  6. function addHandlers(handlers, parser) {
  7. Object.keys(handlers).forEach(eventName => {
  8. parser.on(eventName, handlers[eventName]);
  9. });
  10. }
  11. exports.installPlugins = (plugins, parser) => {
  12. let plugin;
  13. for (let pluginModule of plugins) {
  14. plugin = require(pluginModule);
  15. // allow user-defined plugins to...
  16. // ...register event handlers
  17. if (plugin.handlers) {
  18. addHandlers(plugin.handlers, parser);
  19. }
  20. // ...define tags
  21. if (plugin.defineTags) {
  22. plugin.defineTags(dictionary);
  23. }
  24. // ...add a Mozilla Parser API node visitor
  25. if (plugin.astNodeVisitor) {
  26. parser.addAstNodeVisitor(plugin.astNodeVisitor);
  27. }
  28. }
  29. };