diff options
Diffstat (limited to 'src/parser.js')
-rw-r--r-- | src/parser.js | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/parser.js b/src/parser.js index 7ee4361b..8158edf1 100644 --- a/src/parser.js +++ b/src/parser.js @@ -153,22 +153,25 @@ function makeSplitter(parentSlot, parentSlotValue, parentUnrequiredSlot, childSl function makeCombiner(parentSlot, parentSlotValue, parentUnrequiredSlot, childRequiredSlot, finalizeFunc) { return { select: function(items) { + var ret = []; var parents = items.filter(function(item) { return item[parentSlot] == parentSlotValue && !item[parentUnrequiredSlot] }); for (var i = 0; i < parents.length; i++) { var parent = parents[i]; var child = items.filter(function(item) { return item[childRequiredSlot] && item.parentUid === parent.__uid__ })[0]; - if (child) return [parent, child]; + if (child) { + ret = ret.concat([parent, child]); + } } - return []; + return ret; }, process: function(items) { - var parent = items[0]; - var child = items[1]; - parent[child.parentSlot] = child; - delete child.parentUid; - delete child.parentSlot; - finalizeFunc(parent); - return [parent]; + return Zyme.prototype.processPairs(items, function(parent, child) { + parent[child.parentSlot] = child; + delete child.parentUid; + delete child.parentSlot; + finalizeFunc(parent); + return [parent]; + }); }, }; } |