31 lines
1.0 KiB
JavaScript
31 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, log) {
|
||
|
|
||
|
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;
|
||
|
};
|
||
|
};
|