-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdocs.js
81 lines (66 loc) · 2 KB
/
docs.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
var fs = require('fs'),
path = require('path'),
child_process = require('child_process'),
MarkdownIt = require('markdown-it'),
term = markdownItTerminal = require('@daguej/markdown-it-terminal'),
package = require('../package.json');
var mdfancy = new MarkdownIt();
mdfancy.use(term, {
indent: ' '
});
var mdplain = new MarkdownIt();
var plain = { open: '', close: '' };
mdplain.use(term, {
indent: ' ',
styleOptions: {
code: plain,
blockquote: plain,
html: plain,
heading: plain,
firstHeading: plain,
hr: plain,
listitem: plain,
table: plain,
paragraph: plain,
strong: plain,
em: plain,
codespan: plain,
del: plain,
link: plain,
href: plain
}
});
function renderAll() {
var dir = path.join(__dirname, '../docs'),
outdir = path.join(__dirname, '../dist/docs/'),
files = fs.readdirSync(dir),
optTxt;
if (process.argv[2]) {
fs.writeFileSync(path.join(outdir, process.argv[2] + '.ansi'), renderDoc(mdfancy, path.join(dir, process.argv[2])));
fs.writeFileSync(path.join(outdir, process.argv[2] + '.txt'), renderDoc(mdplain, path.join(dir, process.argv[2]), true));
} else {
require('../bin/req').yargs.showHelp(function(optTxt) {
optTxt = optTxt.substr(optTxt.indexOf('req\n\n')+5);
fs.writeFileSync(path.join(outdir, 'req-options.txt'), optTxt);
for (var file of files) {
if (path.extname(file) == '.md') {
fs.writeFileSync(path.join(outdir, file + '.ansi'), renderDoc(mdfancy, path.join(dir, file)));
fs.writeFileSync(path.join(outdir, file + '.txt'), renderDoc(mdplain, path.join(dir, file), true));
}
}
});
}
console.log('Rendered.');
}
var verex = /\$VERSION/;
function renderDoc(md, file) {
var src = fs.readFileSync(file, 'utf-8');
var rendered = md.render(src);
rendered = rendered.replace(verex, package.version);
return rendered;
}
function buildDoc(name, plain) {
return renderDoc(plain ? mdplain : mdfancy, path.join(__dirname, '../docs', name + '.md'));
}
exports.buildDoc = buildDoc;
if (require.main === module) renderAll();