Skip to content

Commit b6ccdbd

Browse files
committed
Uses loadash _get() for source traversal
1 parent 917a243 commit b6ccdbd

File tree

2 files changed

+28
-16
lines changed

2 files changed

+28
-16
lines changed

index.js

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,7 @@ exports.DataTransform = function(data, map){
2424
var keys = null;
2525

2626
key = key || map.list;
27-
if(key == '') {
28-
value = '';
29-
} else {
30-
keys = key.split('.');
31-
for(var i = 0; i < keys.length; i++ ) {
32-
if(typeof(value) !== "undefined" &&
33-
keys[i] in value) {
34-
value = value[keys[i]];
35-
} else {
36-
return this.defaultOrNull(newKey);
37-
}
38-
}
39-
}
40-
41-
return value;
42-
27+
return key == '' ? '' : _.get(value, key, this.defaultOrNull(newKey));
4328
},
4429

4530
setValue : function(obj, key, newValue) {

test/nodeDataTransformSpec.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,4 +391,31 @@ describe("node-json-transform", function() {
391391

392392
});
393393

394+
it("should allow for dots in object keys", function (){
395+
var data = {
396+
input: [
397+
{ key: { 'dot.key': 'peter' } },
398+
{ key: { 'dot.key': 'paul' } },
399+
{ key: { 'dot.key': 'marry' } }
400+
]
401+
};
402+
403+
var map = {
404+
list: 'input',
405+
item: {
406+
name: 'key["dot.key"]'
407+
}
408+
};
409+
410+
var dataTransform = DataTransform(data, map);
411+
412+
var result = dataTransform.transform();
413+
414+
expect(result).toEqual([
415+
{name: "peter"},
416+
{name: "paul"},
417+
{name: "marry"}
418+
]);
419+
});
420+
394421
});

0 commit comments

Comments
 (0)