UNPKG

jsdoc-sphinx

Version:

A JSDoc3 template which output ReStructured Text for Sphinx Doc

63 lines (58 loc) 1.78 kB
var _ = require('lodash'); var helper = require('jsdoc/util/templateHelper'); var logger = require('jsdoc/util/logger'); var mainDocletKinds = ['class', 'module', 'external', 'namespace', 'mixin', 'interface']; var subDocletKinds = ['function', 'member', 'constant', 'attribute', 'typedef', 'type']; module.exports = { docletChildren: docletChildren, example: example, mainDocletKinds: mainDocletKinds, subDocletKinds: subDocletKinds }; /** * Find the doclet children of a given type. * * @param {object} context the jsdoc context * @param {object} doclet the doclet to use * @param {string} kinds the kind of children to return (function, module, ...) * @return {array} All the children doclet matching the parameters */ function docletChildren(context, doclet, kinds) { if (!kinds) { kinds = mainDocletKinds; } var results = {}; _.each(kinds, function(k) { var q = { kind: k, memberof: doclet ? doclet.longname : {isUndefined: true} }; results[k] = helper.find(context.data, q); }); logger.debug((doclet ? doclet.longname : '<global>'), 'doclet children', 'kinds:', kinds, 'results:', results); return results; } /** * Format a code example. * @return {string} the example output */ function example() { return function(data, render) { var output = '.. code-block:: javascript\n'; var lines = render(data).split('\n'); logger.debug('line-0', data); if (lines.length && lines[0].match(/^<caption>.*<\/caption>$/)) { output += ' :caption: ' + lines.shift().slice(9, -10) + '\n'; } output += '\n'; for (var i = 0; i < lines.length; i++) { output += ' ' + lines[i] + '\n'; } return render(output); }; }