From ead0e904090e2859d64af58347f1fde1e35ca0df Mon Sep 17 00:00:00 2001 From: Jeff Williams Date: Sun, 3 Aug 2014 11:44:42 -0700 Subject: [PATCH] handle variations when generating a tree of longnames --- lib/jsdoc/name.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/jsdoc/name.js b/lib/jsdoc/name.js index 82fcdec4..a5a8a29e 100644 --- a/lib/jsdoc/name.js +++ b/lib/jsdoc/name.js @@ -279,14 +279,25 @@ exports.shorten = function(longname, forcedMemberof) { return shorten(longname, SCOPE_PUNC, forcedMemberof); }; -function splitLongname(longname) { +function stripVariation(name) { + return name.replace(/\([^)]\)$/, ''); +} + +function splitLongname(longname, options) { var chunks = []; var currentNameInfo; var nameInfo = {}; var previousName = longname; var splitters = SCOPE_PUNC.concat('/'); + options = _.defaults(options || {}, { + includeVariation: true + }); + do { + if (!options.includeVariation) { + previousName = stripVariation(previousName); + } currentNameInfo = nameInfo[previousName] = shorten(previousName, splitters); previousName = currentNameInfo.memberof; chunks.push(currentNameInfo.scope + currentNameInfo.name); @@ -300,10 +311,11 @@ function splitLongname(longname) { // TODO: docs exports.longnamesToTree = function longnamesToTree(longnames, doclets) { + var splitOptions = { includeVariation: false }; var tree = {}; longnames.forEach(function(longname) { - var processed = splitLongname(longname); + var processed = splitLongname(longname, splitOptions); var nameInfo = processed.nameInfo; var chunk; var currentLongname = '';