32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var _ = require('lodash');
 | 
						|
 | 
						|
/**
 | 
						|
 * @dgService getDocFromAlias
 | 
						|
 * @description Get an array of docs that match this alias, relative to the originating doc.
 | 
						|
 */
 | 
						|
module.exports = function getDocFromAlias(aliasMap) {
 | 
						|
 | 
						|
  return function getDocFromAlias(alias, originatingDoc) {
 | 
						|
    var docs = aliasMap.getDocs(alias);
 | 
						|
 | 
						|
    // If there is more than one item with this name then try to filter them by the originatingDoc's
 | 
						|
    // area
 | 
						|
    if (docs.length > 1 && originatingDoc && originatingDoc.area) {
 | 
						|
      docs = _.filter(docs, function(doc) { return doc.area === originatingDoc.area; });
 | 
						|
    }
 | 
						|
 | 
						|
    // If filtering by area left us with none then let's start again
 | 
						|
    if (docs.length === 0) {
 | 
						|
      docs = aliasMap.getDocs(alias);
 | 
						|
    }
 | 
						|
 | 
						|
    // If there is more than one item with this name then try to filter them by the originatingDoc's
 | 
						|
    // module
 | 
						|
    if (docs.length > 1 && originatingDoc && originatingDoc.module) {
 | 
						|
      docs = _.filter(docs, function(doc) { return doc.module === originatingDoc.module; });
 | 
						|
    }
 | 
						|
 | 
						|
    return docs;
 | 
						|
  };
 | 
						|
};
 |