1 |
|
2 | var jsdocParse = require('jsdoc-parse')
|
3 | var dmd = require('dmd')
|
4 | var streamConnect = require('stream-connect')
|
5 |
|
6 | /**
|
7 | * @module jsdoc-to-markdown
|
8 | * @typicalname jsdoc2md
|
9 | * @example
|
10 | * var jsdoc2md = require("jsdoc-to-markdown")
|
11 | */
|
12 | module.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 | */
|
29 | function 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 | */
|