forked from leancloud/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
comment.js
85 lines (80 loc) · 2.05 KB
/
comment.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
82
83
84
85
var _ = require('underscore');
var Promise = require('bluebird');
var cheerio = require('cheerio');
var request = require('request-promise');
var sessionToken = process.env.DOC_COMMENT_TOKEN
var commentServer = process.env.COMMENT_SERVER || 'https://comment.leanapp.cn'
var commentDoms = 'p,pre';
exports.release = function(docSite) {
return request({
url: `${commentServer}/api/docReleases`,
method: 'POST',
headers: {
'Session-Token': sessionToken,
},
body: {
docSite
},
json: true
})
}
exports.addCommentIdToDoc = function(fileName, content, release) {
var $ = cheerio.load(content, { decodeEntities: false });
var snippets = []
$(commentDoms).each(function(i, elem) {
if($(elem).text().trim().length > 0) {
snippets.push({
content: $(elem).text(),
type: elem.name,
})
}
});
return exports.addSnippets(snippets)
.then(snippetVersions => {
return request({
url: `${commentServer}/api/docs`,
method: 'POST',
headers: {
'Session-Token': sessionToken,
},
body: {
releaseId: release.id,
fileName,
snippetVersions,
},
json: true
})
.then(function(res) {
$('html').first().attr('version', res.version);
var index = 0;
$(commentDoms).each(function(i, elem) {
if($(elem).text().trim().length > 0) {
$(elem).attr('id', snippetVersions[index]);
$(elem).attr('version', snippetVersions[index]);
index++;
}
});
return $.html();
})
})
}
exports.addSnippets = function(snippets) {
return Promise.map(chunk(snippets, 100), function(snippets) {
return request({
url: `${commentServer}/api/snippets`,
method: 'POST',
headers: {
'Session-Token': sessionToken,
},
body: snippets,
json: true
})
}, {concurrency: 4})
.then(_.flatten)
}
const chunk = function(data, n) {
var lists = _.groupBy(data, function(element, index){
return Math.floor(index/n);
});
return _.toArray(lists);
}