Skip to content

Commit 5127f4e

Browse files
devongovetttmcw
authored andcommitted
feat: Add support for yields tag (#3)
1 parent 403a117 commit 5127f4e

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

lib/doctrine.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@
5353
return title === 'return' || title === 'returns';
5454
}
5555

56+
function isYieldsTitle(title) {
57+
return title === 'yield' || title === 'yields';
58+
}
59+
5660
function isProperty(title) {
5761
return title === 'property' || title === 'prop';
5862
}
@@ -75,7 +79,7 @@
7579
}
7680

7781
function isTypeParameterRequired(title) {
78-
return isParamTitle(title) || isReturnTitle(title) ||
82+
return isParamTitle(title) || isReturnTitle(title) || isYieldsTitle(title) ||
7983
title === 'define' || title === 'enum' ||
8084
title === 'implements' || title === 'this' ||
8185
title === 'type' || title === 'typedef' || isProperty(title);
@@ -450,7 +454,7 @@
450454
try {
451455
this._tag.type = parseType(this._title, this._last, this._options.range);
452456
if (!this._tag.type) {
453-
if (!isParamTitle(this._title) && !isReturnTitle(this._title)) {
457+
if (!isParamTitle(this._title) && !isReturnTitle(this._title) && !isYieldsTitle(this._title)) {
454458
if (!this.addError('Missing or invalid tag type')) {
455459
return false;
456460
}

test/parse.js

+17
Original file line numberDiff line numberDiff line change
@@ -1383,6 +1383,23 @@ describe('parse', function () {
13831383
e1.fields.should.containEql({type: 'FieldType', key: 'error',
13841384
value: {type: 'NameExpression', name: 'Error'}});
13851385
});
1386+
1387+
it('yields', function () {
1388+
var res = doctrine.parse(
1389+
[
1390+
"/**",
1391+
" * @yields {String} userName",
1392+
"*/"
1393+
].join('\n'), { unwrap: true });
1394+
res.tags.should.have.length(1);
1395+
res.tags[0].should.have.property('title', 'yields');
1396+
res.tags[0].should.have.property('description', 'userName');
1397+
res.tags[0].should.have.property('type');
1398+
res.tags[0].type.should.eql({
1399+
type: 'NameExpression',
1400+
name: 'String'
1401+
});
1402+
});
13861403
});
13871404

13881405
describe('parseType', function () {

0 commit comments

Comments
 (0)