Skip to content

Commit 94fd79e

Browse files
committed
remove stream interface
1 parent 4fdc0e5 commit 94fd79e

7 files changed

Lines changed: 68 additions & 511 deletions

File tree

es5/jsdoc-parse.js

Lines changed: 11 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
'use strict';
22

3-
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4-
5-
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
6-
7-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8-
9-
var a = require('array-tools');
3+
var sortArray = require('sort-array');
104
var fileSet = require('file-set');
115
var Transform = require('stream').Transform;
126
var transform = require('./transform');
@@ -15,66 +9,23 @@ var assert = require('assert');
159
var connect = require('stream-connect');
1610
var fs = require('fs');
1711

18-
module.exports = jsdocParse;
19-
20-
function jsdocParse(options) {
21-
options = new ParseOptions(options);
22-
var jsdocInput = undefined;
23-
try {
24-
var _ret = function () {
25-
options.validate();
26-
27-
var outputStream = collectJson(function (data) {
28-
return applyOptions(data, options);
29-
});
30-
var transformStream = connect(transform(), outputStream);
31-
32-
if (options.src && options.files.length) {
33-
jsdocInput = concatJsonFileArrays(options.files);
34-
process.nextTick(function () {
35-
transformStream.end(JSON.stringify(jsdocInput));
36-
});
37-
}
38-
return {
39-
v: transformStream
40-
};
41-
}();
12+
exports.parse = parse;
13+
exports.getStats = getStats;
4214

43-
if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
44-
} catch (err) {
45-
var _ret2 = function () {
46-
var output = new Transform();
47-
process.nextTick(function () {
48-
output.emit('error', err);
49-
});
50-
return {
51-
v: output
52-
};
53-
}();
15+
function parse(jsdocExplainOutput, options) {
16+
var data = transform(jsdocExplainOutput);
5417

55-
if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === "object") return _ret2.v;
56-
}
57-
}
58-
59-
function concatJsonFileArrays(files) {
60-
return files.reduce(function (prev, curr) {
61-
var fileContent = fs.readFileSync(curr, 'utf8');
62-
try {
63-
var data = JSON.parse(fileContent);
64-
return prev.concat(data);
65-
} catch (err) {
66-
err.message += ' input: ' + fileContent;
67-
throw err;
68-
}
69-
}, []);
18+
return data;
7019
}
7120

7221
function applyOptions(data, options) {
7322
if (options.stats) {
7423
return JSON.stringify(getStats(data), null, ' ') + '\n';
7524
} else {
7625
data = data.filter(function (item) {
77-
var parent = a.findWhere(data, { id: item.memberof }) || {};
26+
var parent = data.find(function (d) {
27+
return d.id === item.memberof;
28+
}) || {};
7829
if (item.ignore || parent.ignore) {
7930
return false;
8031
} else if (!options.private && item.access === 'private' || parent.access === 'private') {
@@ -111,40 +62,6 @@ function sort(array, sortBy) {
11162
if (!sortBy) {
11263
return array;
11364
} else {
114-
return a.sortBy(array, sortBy, order);
65+
return sortArray(array, sortBy, order);
11566
}
116-
}
117-
118-
var ParseOptions = function () {
119-
function ParseOptions(options) {
120-
_classCallCheck(this, ParseOptions);
121-
122-
this.src = null;
123-
124-
this.private = false;
125-
126-
this.stats;
127-
128-
this.html = false;
129-
130-
this['sort-by'] = ['scope', 'category', 'kind', 'order'];
131-
132-
Object.assign(this, options);
133-
if (this.src) {
134-
this.fileSet = fileSet(this.src);
135-
this.files = this.fileSet.files;
136-
}
137-
}
138-
139-
_createClass(ParseOptions, [{
140-
key: 'validate',
141-
value: function validate() {
142-
if (this.src) {
143-
assert.ok(this.fileSet.files.length, 'Please specify valid input files.');
144-
assert.ok(!(this.fileSet.notExisting && this.fileSet.notExisting.length), 'These files do not exist: ' + this.fileSet.notExisting.join(', '));
145-
}
146-
}
147-
}]);
148-
149-
return ParseOptions;
150-
}();
67+
}

es5/transform.js

Lines changed: 39 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -3,59 +3,56 @@
33
var o = require('object-tools');
44
var a = require('array-tools');
55
var testValue = require('test-value');
6-
var collectJson = require('collect-json');
76

87
module.exports = transform;
98

10-
function transform() {
11-
return collectJson(function (data) {
12-
data = fixConstructorMemberLongnames(data);
9+
function transform(data) {
10+
data = fixConstructorMemberLongnames(data);
1311

14-
var json = data.filter(function (i) {
15-
return !i.undocumented && !/package|file/.test(i.kind);
16-
});
12+
var json = data.filter(function (i) {
13+
return !i.undocumented && !/package|file/.test(i.kind);
14+
});
1715

18-
json = json.map(setIsExportedFlag);
19-
json = json.map(setCodename);
20-
json = insertConstructors(json);
21-
22-
json = json.map(function (doclet) {
23-
doclet = setID(doclet);
24-
doclet = setParentID(doclet);
25-
26-
doclet = removeQuotes(doclet);
27-
doclet = cleanProperties(doclet);
28-
doclet = buildTodoList(doclet);
29-
doclet = extractTypicalName(doclet);
30-
doclet = extractCategory(doclet);
31-
doclet = extractChainable(doclet);
32-
doclet = extractCustomTags(doclet);
33-
doclet = setTypedefScope(doclet);
34-
doclet = renameThisProperty(doclet);
35-
doclet = removeMemberofFromModule(doclet);
36-
doclet = convertIsEnumFlagToKind(doclet);
37-
return doclet;
38-
});
16+
json = json.map(setIsExportedFlag);
17+
json = json.map(setCodename);
18+
json = insertConstructors(json);
19+
20+
json = json.map(function (doclet) {
21+
doclet = setID(doclet);
22+
doclet = setParentID(doclet);
23+
24+
doclet = removeQuotes(doclet);
25+
doclet = cleanProperties(doclet);
26+
doclet = buildTodoList(doclet);
27+
doclet = extractTypicalName(doclet);
28+
doclet = extractCategory(doclet);
29+
doclet = extractChainable(doclet);
30+
doclet = extractCustomTags(doclet);
31+
doclet = setTypedefScope(doclet);
32+
doclet = renameThisProperty(doclet);
33+
doclet = removeMemberofFromModule(doclet);
34+
doclet = convertIsEnumFlagToKind(doclet);
35+
return doclet;
36+
});
3937

40-
var exported = a.where(json, { isExported: true });
41-
var newIDs = a.pluck(exported, 'id');
38+
var exported = a.where(json, { isExported: true });
39+
var newIDs = a.pluck(exported, 'id');
4240

43-
newIDs.forEach(function (newID) {
44-
update(json, { isExported: undefined, '!kind': 'module' }, function (doclet) {
45-
return updateIDReferences(doclet, newID);
46-
});
41+
newIDs.forEach(function (newID) {
42+
update(json, { isExported: undefined, '!kind': 'module' }, function (doclet) {
43+
return updateIDReferences(doclet, newID);
4744
});
45+
});
4846

49-
json = removeEnumChildren(json);
50-
json = json.map(removeUnwanted);
51-
json = json.map(sortIdentifier);
52-
53-
json.forEach(function (doclet, index) {
54-
doclet.order = index;
55-
});
47+
json = removeEnumChildren(json);
48+
json = json.map(removeUnwanted);
49+
json = json.map(sortIdentifier);
5650

57-
return JSON.stringify(json, null, ' ');
51+
json.forEach(function (doclet, index) {
52+
doclet.order = index;
5853
});
54+
55+
return json;
5956
}
6057

6158
function setID(doclet) {

index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ if (detect.all('class', 'arrowFunction', 'let', 'const', 'newArrayFeatures')) {
44
module.exports = require('./lib/jsdoc-parse')
55
} else {
66
require('core-js/es6/object')
7+
require('core-js/es6/array')
78
module.exports = require('./es5/jsdoc-parse')
89
}

0 commit comments

Comments
 (0)