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);
};
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 = '';