handle variations when generating a tree of longnames

This commit is contained in:
Jeff Williams 2014-08-03 11:44:42 -07:00
parent 1171593908
commit ead0e90409

View File

@ -279,14 +279,25 @@ exports.shorten = function(longname, forcedMemberof) {
return shorten(longname, SCOPE_PUNC, forcedMemberof); return shorten(longname, SCOPE_PUNC, forcedMemberof);
}; };
function splitLongname(longname) { function stripVariation(name) {
return name.replace(/\([^)]\)$/, '');
}
function splitLongname(longname, options) {
var chunks = []; var chunks = [];
var currentNameInfo; var currentNameInfo;
var nameInfo = {}; var nameInfo = {};
var previousName = longname; var previousName = longname;
var splitters = SCOPE_PUNC.concat('/'); var splitters = SCOPE_PUNC.concat('/');
options = _.defaults(options || {}, {
includeVariation: true
});
do { do {
if (!options.includeVariation) {
previousName = stripVariation(previousName);
}
currentNameInfo = nameInfo[previousName] = shorten(previousName, splitters); currentNameInfo = nameInfo[previousName] = shorten(previousName, splitters);
previousName = currentNameInfo.memberof; previousName = currentNameInfo.memberof;
chunks.push(currentNameInfo.scope + currentNameInfo.name); chunks.push(currentNameInfo.scope + currentNameInfo.name);
@ -300,10 +311,11 @@ function splitLongname(longname) {
// TODO: docs // TODO: docs
exports.longnamesToTree = function longnamesToTree(longnames, doclets) { exports.longnamesToTree = function longnamesToTree(longnames, doclets) {
var splitOptions = { includeVariation: false };
var tree = {}; var tree = {};
longnames.forEach(function(longname) { longnames.forEach(function(longname) {
var processed = splitLongname(longname); var processed = splitLongname(longname, splitOptions);
var nameInfo = processed.nameInfo; var nameInfo = processed.nameInfo;
var chunk; var chunk;
var currentLongname = ''; var currentLongname = '';