diff --git a/lib/dox.js b/lib/dox.js index 38fa8e2..be4786e 100644 --- a/lib/dox.js +++ b/lib/dox.js @@ -406,7 +406,7 @@ exports.parseTagTypes = function(str, tag) { } return []; } - var {parse, publish, createDefaultPublisher, NodeType} = require('jsdoctypeparser'); + var {parse, publish, createDefaultPublisher, NodeType, SyntaxType} = require('jsdoctypeparser'); var result = parse(str.substring(1, str.length - 1)); var customPublisher = Object.assign({}, createDefaultPublisher(), { @@ -433,6 +433,21 @@ exports.parseTagTypes = function(str, tag) { obj[entry.key] = transform(entry.value); return obj; }, {})]; + } else if (type && type.type === NodeType.GENERIC) { + if (type.meta.syntax === SyntaxType.GenericTypeSyntax.ANGLE_BRACKET) { + return [type.subject.name + '<' + transform(type.objects[0]).join('|') + '>']; + } else if (type.meta.syntax === SyntaxType.GenericTypeSyntax.ANGLE_BRACKET_WITH_DOT) { + return [type.subject.name + '.<' + transform(type.objects[0]).join('|') + '>']; + } else if (type.meta.syntax === SyntaxType.GenericTypeSyntax.SQUARE_BRACKET) { + return [type.subject.name + '[' + transform(type.objects[0]).join('|') + ']']; + } else if (type.meta.syntax === SyntaxType.VariadicTypeSyntax.PREFIX_DOTS) { + return [`...${type.subject.name}`]; + } else if (type.meta.syntax === SyntaxType.VariadicTypeSyntax.SUFFIX_DOTS) { + return [`${type.subject.name}...`]; + } else if (type.meta.syntax === SyntaxType.VariadicTypeSyntax.ONLY_DOTS) { + return ['...']; + } + return [type.subject.name] } else if (type && type.value) { return transform(type.value); } else {