UNPKG

1.53 kBJavaScriptView Raw
1'use strict'
2var jsdocParse = require('jsdoc-parse')
3var dmd = require('dmd')
4var streamConnect = require('stream-connect')
5
6/**
7 * @module jsdoc-to-markdown
8 * @typicalname jsdoc2md
9 * @example
10 * var jsdoc2md = require("jsdoc-to-markdown")
11 */
12module.exports = jsdoc2md
13
14/**
15 * Transforms jsdoc into markdown documentation.
16 * @param [options] {module:dmd~DmdOptions | module:jsdoc-parse~ParseOptions} - the options
17 * @return {external:TransformStream}
18 * @alias module:jsdoc-to-markdown
19 * @example
20 * Two ways to use `jsdoc2md`. Either pass in filepaths (`**` glob matching supported) of javascript source files:
21 * ```js
22 * > jsdoc2md({ src: "lib/*.js" }).pipe(process.stdout)
23 * ```
24 * or pipe in source code from another source:
25 * ```js
26 * > fs.createReadStream("lib/main.js").pipe(jsdoc2md()).pipe(process.stdout)
27 * ```
28 */
29function jsdoc2md (options) {
30 options = options || {}
31 var src = options.src
32 var dmdStream = dmd(options)
33 var jsdocStream
34
35 if (src) {
36 jsdocStream = jsdocParse(options)
37
38 if (options.json || options.stats) {
39 return jsdocStream
40 } else {
41 jsdocStream.pipe(dmdStream)
42 jsdocStream.on('error', dmdStream.emit.bind(dmdStream, 'error'))
43 return dmdStream
44 }
45 } else {
46 jsdocStream = jsdocParse(options)
47
48 if (options.json || options.stats) {
49 return jsdocStream
50 } else {
51 return streamConnect(jsdocStream, dmdStream)
52 }
53 }
54}
55
56/**
57 * @external TransformStream
58 * @see https://nodejs.org/api/stream.html#stream_class_stream_transform
59 */