Skip to content

Commit c38b7df

Browse files
author
Michael Bosworth
committed
PR #11 merged and released
1 parent 01eb204 commit c38b7df

File tree

9 files changed

+412
-94
lines changed

9 files changed

+412
-94
lines changed

.vscode/launch.json

Lines changed: 0 additions & 21 deletions
This file was deleted.

README.md

Lines changed: 185 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# node-data-transform
22

3-
Usage
3+
##Usage
4+
5+
###Basic Example
46

57
```javascript
68
var DataTransform = require("node-json-transform").DataTransform,
@@ -81,22 +83,193 @@ console.log(result);
8183

8284
The expected output.
8385
```javascript
84-
[{
85-
name : "title1",
86-
info: "description1",
87-
text: "This is a blog.",
88-
date: 1383544800000,
89-
link: "http://goo.cm",
90-
info: "mike more info",
91-
clearMe: "",
92-
fieldGroup: ['title1', { link : "http://goo.cm" }],
93-
iterated: true
94-
}]
86+
[
87+
{
88+
name : "title1",
89+
info: "description1",
90+
text: "This is a blog.",
91+
date: 1383544800000,
92+
link: "http://goo.cm",
93+
info: "mike more info",
94+
clearMe: "",
95+
fieldGroup: ['title1', { link : "http://goo.cm" }],
96+
iterated: true
97+
}
98+
]
9599
```
96100

101+
102+
###Advanced Example
103+
104+
'''
105+
var map = {
106+
list: 'items',
107+
item: {
108+
id: 'id',
109+
sku: 'sku',
110+
zero: 'zero',
111+
toReplace: 'sku',
112+
errorReplace: 'notFound',
113+
simpleArray: ['id', 'sku','sku'],
114+
complexArray: [ {node: 'id'} , { otherNode:'sku' } , {toReplace:'sku'} ],
115+
subObject: {
116+
node1: 'id',
117+
node2: 'sku',
118+
subSubObject: {
119+
node1: 'id',
120+
node2: 'sku',
121+
}
122+
}
123+
},
124+
operate: [
125+
{
126+
run: (val) => 'replacement',
127+
on: 'subObject.subSubObject.node1'
128+
},
129+
{
130+
run: (val) => 'replacement',
131+
on: 'errorReplace'
132+
},
133+
{
134+
run: (val) => 'replacement',
135+
on: 'toReplace'
136+
},
137+
{
138+
run: (val) => 'replacement',
139+
on: 'simpleArray.2'
140+
},
141+
{
142+
run: (val) => 'replacement',
143+
on: 'complexArray.2.toReplace'
144+
}
145+
]
146+
};
147+
148+
var object = {
149+
items:[
150+
{
151+
id: 'books',
152+
zero: 0,
153+
sku:'10234-12312'
154+
}
155+
]
156+
};
157+
var result = DataTransform(data, map).transform();
158+
'''
159+
160+
The expected output.
161+
'''
162+
[
163+
{
164+
"id": "books",
165+
"sku": "10234-12312",
166+
"zero": 0,
167+
"toReplace": "replacement",
168+
"errorReplace": "replacement",
169+
"simpleArray": [
170+
"books",
171+
"10234-12312",
172+
"replacement"
173+
],
174+
"complexArray": [
175+
{
176+
"node": "books"
177+
},
178+
{
179+
"otherNode": "10234-12312"
180+
},
181+
{
182+
"toReplace": "replacement"
183+
}
184+
],
185+
"subObject": {
186+
"node1": "books",
187+
"node2": "10234-12312",
188+
"subSubObject": {
189+
"node1": "replacement",
190+
"node2": "10234-12312"
191+
}
192+
}
193+
}
194+
]
195+
'''
196+
197+
###Multi-template Example
198+
199+
'''
200+
products: [{
201+
id: 'books0',
202+
zero: 0,
203+
sku: '00234-12312',
204+
subitems: [
205+
{ subid: "0.0", subsku: "subskuvalue0.0" },
206+
{ subid: "0.1", subsku: "subskuvalue0.1" }
207+
]
208+
}, {
209+
id: 'books1',
210+
zero: 1,
211+
sku: '10234-12312',
212+
subitems: [
213+
{ subid: "1.0", subsku: "subskuvalue1.0" },
214+
{ subid: "1.1", subsku: "subskuvalue1.1" }
215+
]
216+
}]
217+
};
218+
219+
var baseMap = {
220+
'list': 'products',
221+
'item' : {
222+
'myid': 'id',
223+
'mysku': 'sku',
224+
'mysubitems': 'subitems'
225+
},
226+
operate: [
227+
{
228+
'run': function(ary) {
229+
return DataTransform({list:ary}, nestedMap).transform();
230+
},
231+
'on': 'mysubitems'
232+
}
233+
]
234+
};
235+
236+
var nestedMap = {
237+
'list': 'list',
238+
'item' : {
239+
'mysubid': 'subid',
240+
'mysubsku': 'subsku'
241+
}
242+
};
243+
var result = DataTransform(data, baseMap).transform();
244+
'''
245+
246+
The expected output.
247+
248+
'''
249+
[
250+
{
251+
"myid": "books0",
252+
"mysku": "00234-12312",
253+
"mysubitems": [
254+
{ "mysubid": "0.0", "mysubsku": "subskuvalue0.0" },
255+
{ "mysubid": "0.1", "mysubsku": "subskuvalue0.1"}
256+
]
257+
},
258+
{
259+
"myid": "books1",
260+
"mysku": "10234-12312",
261+
"mysubitems": [
262+
{ "mysubid": "1.0", "mysubsku": "subskuvalue1.0" },
263+
{ "mysubid": "1.1", "mysubsku": "subskuvalue1.1" }
264+
]
265+
}
266+
]
267+
'''
268+
97269
Enjoy!
98270

99271
## Changelog
272+
1.0.11 Adding support for next object and nested array references.
100273
1.0.10 Make each compatible with other options.
101274
1.0.9 Updated the changelog.
102275
1.0.8 Added each functionality to the map.

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ exports.DataTransform = function(data, map){
124124
array = _.map(oldkey, _.bind(function(item,map) {return this.iterator(map,item)}, this , item));//need to swap arguments for bind
125125
obj[newkey] = array;
126126
} else if(typeof oldkey == 'object'){
127-
let bound = _.bind(this.iterator, this, oldkey,item)
127+
var bound = _.bind(this.iterator, this, oldkey,item)
128128
obj[newkey] = bound();
129129
}
130130
else {

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.10",
3+
"version": "1.0.11",
44
"description": "A node module for transforming and performing operations on JSON.",
55
"main": "index.js",
66
"scripts": {
@@ -25,7 +25,7 @@
2525
"lodash": "^4.16.4"
2626
},
2727
"devDependencies": {
28-
"jasmine-node": "^1.14.5",
29-
"underscore": "^1.8.3"
28+
"deep-freeze": "0.0.1",
29+
"jasmine-node": "^1.14.5"
3030
}
3131
}

test/complexTemplate.js

Lines changed: 0 additions & 56 deletions
This file was deleted.

0 commit comments

Comments
 (0)