Skip to content

Commit 61e4fef

Browse files
author
Michael
committed
new functional transform interface. object support. updated documentation
1 parent 2b05775 commit 61e4fef

File tree

9 files changed

+625
-327
lines changed

9 files changed

+625
-327
lines changed

README.md

Lines changed: 290 additions & 257 deletions
Large diffs are not rendered by default.

index.js

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
var _ = require('lodash');
44

5-
exports.DataTransform = function(data, map){
5+
var DataTransform = function(data, map){
66

77
return {
88

@@ -59,18 +59,29 @@ exports.DataTransform = function(data, map){
5959
},
6060

6161
transform : function(context) {
62-
63-
var value = this.getValue(data, map.list);
62+
var useList = map.list != undefined;
63+
var value;
64+
if (useList) {
65+
value = this.getValue(data, map.list);
66+
} else if (_.isArray(data) && !useList) {
67+
value = data;
68+
} else if (_.isObject(data) && !useList) {
69+
value = [data];
70+
}
6471
var normalized = [];
65-
72+
6673
if(!_.isEmpty(value)) {
67-
var list = this.getList();
74+
var list = useList ? this.getList() : value;
6875
normalized = map.item ? _.map(list, _.bind(this.iterator, this, map.item)) : list;
6976
normalized = _.bind(this.operate, this, normalized)(context);
7077
normalized = this.each(normalized, context);
7178
normalized = this.removeAll(normalized);
7279
}
7380

81+
if(!useList && _.isObject(data) && !_.isArray(data)){
82+
return normalized[0];
83+
}
84+
7485
return normalized;
7586

7687
},
@@ -158,3 +169,15 @@ exports.DataTransform = function(data, map){
158169
};
159170

160171
};
172+
173+
exports.DataTransform = DataTransform;
174+
175+
exports.transform = function(data, map, context) {
176+
var dataTransform = new DataTransform(data, map)
177+
return dataTransform.transform(context);
178+
}
179+
180+
exports.transformAsync = function(data, map, context) {
181+
var dataTransform = new DataTransform(data, map)
182+
return dataTransform.transformAsync(context);
183+
}

package-lock.json

Lines changed: 197 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "node-json-transform",
3-
"version": "1.0.21",
3+
"version": "1.1.0",
44
"description": "A node module for transforming and performing operations on JSON.",
55
"main": "index.js",
66
"scripts": {
@@ -22,10 +22,10 @@
2222
},
2323
"homepage": "https://github.com/bozzltron/node-json-transform",
2424
"dependencies": {
25-
"lodash": "^4.17.4"
25+
"lodash": "^4.17.15"
2626
},
2727
"devDependencies": {
2828
"deep-freeze": "0.0.1",
29-
"jasmine-node": "^1.14.5"
29+
"jasmine-node": "^3.0.0"
3030
}
3131
}

test/complexTemplateSpec.js

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
var DataTransform = require('../index.js').DataTransform,
1+
var transform = require('../index.js').transform,
22
_ = require("lodash");
33

44
var map = {
5-
list: 'items',
65
item: {
76
id: 'id',
87
sku: 'sku',
@@ -42,15 +41,13 @@ var map = {
4241
},]
4342
};
4443

45-
var object = {
46-
items:[
47-
{
48-
id: 'books',
49-
zero: 0,
50-
sku:'10234-12312'
51-
}
52-
]
53-
};
44+
var object = [
45+
{
46+
id: 'books',
47+
zero: 0,
48+
sku:'10234-12312'
49+
}
50+
];
5451

5552
describe("node-json-transform", function() {
5653

@@ -90,8 +87,7 @@ describe("node-json-transform", function() {
9087
}
9188
];
9289

93-
var dataTransform = new DataTransform(object, map);
94-
var result = dataTransform.transform();
90+
var result = transform(object, map);
9591

9692
expect(result).toEqual(expected);
9793

0 commit comments

Comments
 (0)