Skip to content

Commit 080df12

Browse files
author
sttk
committed
1.4.1
1 parent b0bd194 commit 080df12

File tree

4 files changed

+21
-19
lines changed

4 files changed

+21
-19
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ This program is free software under [MIT][mit-url] License.
166166
See the file LICENSE in this distribution for more details.
167167

168168
[repo-url]: https://github.com/sttk/copy-props/
169-
[npm-img]: https://img.shields.io/badge/npm-v1.4.0-blue.svg
169+
[npm-img]: https://img.shields.io/badge/npm-v1.4.1-blue.svg
170170
[npm-url]: https://www.npmjs.org/package/copy-props/
171171
[mit-img]: https://img.shields.io/badge/license-MIT-green.svg
172172
[mit-url]: https://opensource.org/licenses.MIT

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "copy-props",
3-
"version": "1.4.0",
3+
"version": "1.4.1",
44
"description": "Copy properties deeply between two objects.",
55
"main": "index.js",
66
"files": [

test/web/copy-props.test.js

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,7 @@ function copyWithFromto(value, keyChain, nodeInfo) {
8686

8787
for (var i = 0, n = dstKeyChains.length; i < n; i++) {
8888
var dstValue = nodeInfo.convert(value, keyChain, dstKeyChains[i]);
89-
if (dstValue !== undefined) {
90-
setDeep(nodeInfo.dest, dstKeyChains[i], dstValue);
91-
}
89+
setDeep(nodeInfo.dest, dstKeyChains[i], dstValue);
9290
}
9391
}
9492

@@ -8105,38 +8103,42 @@ module.exports = function(obj, fn, opts) {
81058103
return;
81068104
}
81078105

8108-
var nodeInfo = isPlainObject(opts) ? objectAssign({}, opts) : {};
8109-
nodeInfo.depth = 0;
8106+
if (!isPlainObject(opts)) {
8107+
opts = {};
8108+
}
81108109

8111-
forEachChild(obj, '', fn, nodeInfo);
8110+
forEachChild(obj, '', fn, 0, opts);
81128111
};
81138112

8114-
function forEachChild(node, baseKey, fn, nodeInfo) {
8113+
function forEachChild(node, baseKey, fn, depth, opts) {
81158114
var keys = Object.keys(node);
8116-
if (typeof nodeInfo.sort === 'function') {
8117-
var sortedKeys = nodeInfo.sort(keys);
8115+
if (typeof opts.sort === 'function') {
8116+
var sortedKeys = opts.sort(keys);
81188117
if (Array.isArray(sortedKeys)) {
81198118
keys = sortedKeys;
81208119
}
81218120
}
81228121

8122+
depth += 1;
8123+
81238124
for (var i = 0, n = keys.length; i < n; i++) {
81248125
var key = keys[i];
81258126
var keyChain = baseKey + '.' + key;
81268127
var value = node[key];
81278128

8128-
var childInfo = objectAssign({}, nodeInfo);
8129-
childInfo.index = i;
8130-
childInfo.count = n;
8131-
childInfo.depth = nodeInfo.depth + 1;
8132-
childInfo.parent = node;
8129+
var nodeInfo = objectAssign({}, opts);
8130+
nodeInfo.name = key;
8131+
nodeInfo.index = i;
8132+
nodeInfo.count = n;
8133+
nodeInfo.depth = depth;
8134+
nodeInfo.parent = node;
81338135

8134-
var notDigg = fn(value, keyChain.slice(1), childInfo);
8136+
var notDigg = fn(value, keyChain.slice(1), nodeInfo);
81358137
if (notDigg || !isPlainObject(value)) {
81368138
continue;
81378139
}
81388140

8139-
forEachChild(value, keyChain, fn, childInfo);
8141+
forEachChild(value, keyChain, fn, depth, opts);
81408142
}
81418143
}
81428144

web/copy-props.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)