ESDoc

API

If you want to customize output, you can choose following way.

Style Sheets and Scripts

You can includes your style sheets and scripts into output documentation. To see styles and scripts in Config

Plugin Feature

You can modify data(config, code, parser, AST, tag and HTML) at hook points with plugins.

First, you set plugins property in config.

{
  "source": "./src",
  "destination": "./doc",
  "plugins": [
    {"name": "./my-plugin.js"},
    {"name": "esdoc-foo-plugin", "option": {"foo": 123}}
  ]
}

Second, you write plugin code.

my-plugin.js

exports.onStart = function(ev) {
  // take option
  ev.data.option;
};

exports.onHandleConfig = function(ev) {
  // modify config
  ev.data.config.title = ...;
};

exports.onHandleCode = function(ev) {
  // modify code
  ev.data.code = ...;
};

exports.onHandleCodeParser = function(ev) {
  // modify parser
  ev.data.parser = function(code){ ... };
};

exports.onHandleAST = function(ev) {
  // modify AST
  ev.data.ast = ...;
};

exports.onHandleDocs = function(ev) {
  // modify docs
  ev.data.docs = ...;
};

exports.onHandleContent = function(ev) {
  // modify content
  ev.data.content = ...;
};

exports.onComplete = function(ev) {
  // complete
};

Note: esdoc-importpath-plugin is helpful for writing plugins.

Publisher

This is useful for programmable operation ESDoc(e.g. making grunt plugin of ESDoc)

import ESDoc from 'esdoc/out/src/ESDoc.js';
import publisher from 'esdoc/out/src/Publisher/publish.js';

const config = {source: './src', destination: './doc'};

ESDoc.generate(config, publisher);

// if you want to use own publisher
// function publisher(results, config) {
//  console.log(results);
// }
// ESDoc.generate(config, publisher);

Internal Data

TODO: describe internal data.