UNPKG

789 BJavaScriptView Raw
1var _ = require('underscore');
2
3function getIntersection(template, inputObj) {
4
5 var templateKeys = _.keys(template);
6 var inputObjKeys = _.keys(inputObj);
7 var intersectionKeys = _.intersection(templateKeys, inputObjKeys);
8
9 var objKeys = _.filter(intersectionKeys, function(key) {
10 return _.isObject(template[key]) && _.isObject(inputObj[key]);
11 });
12
13 var valueKeys = _.difference(intersectionKeys, objKeys);
14 var valueIntersection = _.pick(inputObj, valueKeys);
15
16 if(_.size(objKeys) <= 0)
17 return valueIntersection;
18
19 var objIntersection = {};
20
21 _.each(objKeys, function(key) {
22 objIntersection[key] = getIntersection(template[key], inputObj[key]);
23 });
24
25 return _.extend({}, valueIntersection, objIntersection);
26
27};
28
29module.exports = getIntersection;
30