Skip to content

Commit f657c88

Browse files
committed
merge objects from getVars plugin method
1 parent 9ea72f0 commit f657c88

1 file changed

Lines changed: 27 additions & 4 deletions

File tree

lib/core.js

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -944,19 +944,42 @@
944944
for(var key in r.data) {
945945
var v = r.data[key];
946946

947+
// TODO: work with arrays?
947948
if (v !== '' && v !== null && ((typeof v === 'string' && !/^\s+$/.test(v)) || typeof v === 'number' || typeof v === 'object')) {
948949

949950
// Check meta plugins order.
950951
allResults.vars._sources = allResults.vars._sources || {};
951952

952-
var prevOrder = null, nextOrder = null, pluginId = allResults.vars._sources[key];
953+
var prevOrder = null, nextOrder = null, prevPluginId = allResults.vars._sources[key];
953954

954-
if (pluginId && plugins[pluginId] && plugins[r.method.pluginId]) {
955-
prevOrder = plugins[pluginId].order;
955+
if (prevPluginId && plugins[prevPluginId] && plugins[r.method.pluginId]) {
956+
prevOrder = plugins[prevPluginId].order;
956957
nextOrder = plugins[r.method.pluginId].order;
957958
}
958959

959-
if (!prevOrder || !nextOrder || prevOrder < nextOrder) {
960+
var oldValue = allResults.vars[key];
961+
962+
var newValueOverrides = !prevOrder || !nextOrder || prevOrder < nextOrder;
963+
964+
if (typeof v === 'object' && typeof oldValue === 'object') {
965+
966+
if (newValueOverrides) {
967+
// Override existing object.
968+
Object.assign(oldValue, v);
969+
} else {
970+
// Reassign with old values on top.
971+
allResults.vars[key] = Object.assign(v, oldValue);
972+
}
973+
974+
if (!Array.isArray(allResults.vars._sources[key])) {
975+
// Convert sources list to array.
976+
allResults.vars._sources[key] = [allResults.vars._sources[key]];
977+
}
978+
allResults.vars._sources[key].push(r.method.pluginId);
979+
980+
} else if (newValueOverrides) {
981+
982+
// Assign new non object value.
960983
allResults.vars[key] = v;
961984
allResults.vars._sources[key] = r.method.pluginId;
962985
}

0 commit comments

Comments
 (0)