1 | 'use strict'
|
2 |
|
3 | const vuedoc = require('@vuedoc/parser')
|
4 | const md = require('./lib/markdown')
|
5 |
|
6 | module.exports.render = (options) => (component) => new Promise((resolve) => {
|
7 | let document = ''
|
8 |
|
9 | md.render(component, options)
|
10 | .on('write', (text) => {
|
11 | if (options.stream) {
|
12 | return options.stream.write(text)
|
13 | }
|
14 | document += text
|
15 | })
|
16 | .on('end', () => resolve(document))
|
17 | })
|
18 |
|
19 | module.exports.join = (options) => {
|
20 | const merge = require('deepmerge')
|
21 | const parsers = options.filenames.map((filename) => {
|
22 | return vuedoc.parse(Object.assign({}, options, { filename }))
|
23 | })
|
24 |
|
25 | return Promise.all(parsers).then(merge.all)
|
26 | }
|
27 |
|
28 | module.exports.md = (options) => {
|
29 | const opts = Object.assign({}, options)
|
30 | const parse = options.join ? this.join(opts) : vuedoc.parse(opts)
|
31 |
|
32 | return parse.then(this.render(opts))
|
33 | }
|