aboutsummaryrefslogtreecommitdiff
path: root/lib/util.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/util.js')
-rw-r--r--lib/util.js11
1 files changed, 4 insertions, 7 deletions
diff --git a/lib/util.js b/lib/util.js
index c5584ee..519289a 100644
--- a/lib/util.js
+++ b/lib/util.js
@@ -220,14 +220,11 @@ u.pullSlice = function (start, end) {
}
u.mergeOpts = function (a, b) {
+ if (typeof b !== 'object' || b === null) return b
+ if (typeof a !== 'object' || a === null) return a
var obj = {}, k
- for (k in a) {
- obj[k] = a[k]
- }
- for (k in b) {
- if (b[k] != null) obj[k] = b[k]
- else delete obj[k]
- }
+ for (k in a) obj[k] = k in b ? u.mergeOpts(a[k], b[k]) : a[k]
+ for (k in b) if (!(k in a) && b[k] != null) obj[k] = b[k]
return obj
}