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; | ||
|  |   }; | ||
|  | }; |