-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
55 lines (46 loc) · 1.45 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
var gulp = require('gulp');
var rename = require('gulp-rename');
var uglify = require('gulp-uglify-es').default;
var replace = require('gulp-replace');
var jsdoc = require('jsdoc-api');
function createTable(source) {
let table = ''
let doc = jsdoc.explainSync({ files: [source] })
let header = function() {
return `| Method/Property | Params | Description |
| :----------- | :----------- | :------------ |
`
}
let row = function(info) {
return `| ${info.name} | ${info.params} | ${info.description} |
`
}
let explodeParams = function(params) {
return params.reduce(function(buffer, item, idx) {
return buffer += `${item.name} *<${item.type.names[0]}>*${(idx < params.length - 1) ? ', ' : ''}`
}, '')
}
table += header()
doc.forEach(function(block) {
if (block.description) {
let info = {
name: `**.${block.name}${(block.kind == 'function') ? '()' : ''}**`,
params: (block.params) ? explodeParams(block.params) : '',
description: block.description
}
table += row(info)
}
})
return table
}
gulp.task('docs', function() {
let listTable = createTable('src/list.js', )
let elementTable = createTable('src/element.js', )
let objectTable = createTable('src/object.js', '')
return gulp.src(['readme.template'])
.pipe(replace('{{ list_table }}', listTable))
.pipe(replace('{{ element_table }}', elementTable))
.pipe(replace('{{ object_table }}', objectTable))
.pipe(rename('README.md'))
.pipe(gulp.dest('./'));
});