Remove some duplication in the Dict.merge method

Currently the `!mergeSubDicts` code-path is essentially just duplicated code, which we can easily avoid by simply moving that check. (This may lead to ever so slightly more parsing for this case, but the difference ought to be negligible in practice.)
This commit is contained in:
Jonas Jenwald 2021-07-22 13:20:28 +02:00
parent ab7b577d85
commit e1ee3835cd

View File

@ -185,22 +185,8 @@ class Dict {
}
static merge({ xref, dictArray, mergeSubDicts = false }) {
const mergedDict = new Dict(xref);
if (!mergeSubDicts) {
for (const dict of dictArray) {
if (!(dict instanceof Dict)) {
continue;
}
for (const [key, value] of Object.entries(dict._map)) {
if (mergedDict._map[key] === undefined) {
mergedDict._map[key] = value;
}
}
}
return mergedDict.size > 0 ? mergedDict : Dict.empty;
}
const properties = new Map();
const mergedDict = new Dict(xref),
properties = new Map();
for (const dict of dictArray) {
if (!(dict instanceof Dict)) {
@ -211,6 +197,8 @@ class Dict {
if (property === undefined) {
property = [];
properties.set(key, property);
} else if (!mergeSubDicts) {
continue; // Ignore additional entries for a "shallow" merge.
}
property.push(value);
}