71 lines
1.8 KiB
JavaScript
71 lines
1.8 KiB
JavaScript
|
|
function parseCodeName(codeName) {
|
|
var parts = [];
|
|
var currentPart;
|
|
|
|
codeName.split('.').forEach(function(part) {
|
|
var subParts = part.split(':');
|
|
|
|
var name = subParts.pop();
|
|
var modifier = subParts.pop();
|
|
|
|
if (!modifier && currentPart) {
|
|
currentPart.name += '.' + name;
|
|
} else {
|
|
currentPart = {name: name, modifier: modifier};
|
|
parts.push(currentPart);
|
|
}
|
|
});
|
|
return parts;
|
|
}
|
|
|
|
/**
|
|
* @dgService getAliases
|
|
* @description
|
|
* Get a list of all the aliases that can be made from the doc
|
|
* @param {Object} doc A doc from which to extract aliases
|
|
* @return {Array} A collection of aliases
|
|
*/
|
|
module.exports = function getAliases() {
|
|
|
|
return function(doc) {
|
|
|
|
var codeNameParts = parseCodeName(doc.id);
|
|
|
|
var methodName;
|
|
var aliases = [];
|
|
// Add the last part to the list of aliases
|
|
var part = codeNameParts.pop();
|
|
|
|
// If the name contains a # then it is a member and that should be included in the aliases
|
|
if (part.name.indexOf('#') !== -1) {
|
|
methodName = part.name.split('#')[1];
|
|
}
|
|
// Add the part name and modifier, if provided
|
|
aliases.push(part.name);
|
|
if (part.modifier) {
|
|
aliases.push(part.modifier + ':' + part.name);
|
|
}
|
|
|
|
// Continue popping off the parts of the codeName and work forward collecting up each alias
|
|
aliases = codeNameParts.reduceRight(function(aliases, part) {
|
|
|
|
// Add this part to each of the aliases we have so far
|
|
aliases.forEach(function(name) {
|
|
// Add the part name and modifier, if provided
|
|
aliases.push(part.name + '.' + name);
|
|
if (part.modifier) {
|
|
aliases.push(part.modifier + ':' + part.name + '.' + name);
|
|
}
|
|
});
|
|
|
|
return aliases;
|
|
}, aliases);
|
|
|
|
if (methodName) {
|
|
aliases.push(methodName);
|
|
}
|
|
|
|
return aliases;
|
|
};
|
|
}; |