Skip to content

Commit

Permalink
Merge pull request #53 from fastcodejava/master
Browse files Browse the repository at this point in the history
Modified jsonapter.js, added skip template feature.
  • Loading branch information
fastcodejava committed Mar 23, 2017
2 parents 00bb5a4 + f187793 commit cf9da91
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 0 deletions.
23 changes: 23 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ The following are the list of all keys that have special meaning in template obj
- [`ignoreDeep`](#ignoreDeep)
- [`paramKey`](#paramKey)
- [`template`](#template)
- [`skip`](#skip)

<a name="dataKey" />
#### `dataKey` rule
Expand Down Expand Up @@ -283,7 +284,29 @@ var r = j2j.run(template, {
console.log(r); // 'VALUE'
```

<a name="skip" />
#### `skip` rule

This rule is used to skip a template.

```js
var nestedTemplate = {
dataKey: 'b',
skip: true
};

var template = {
template: nestedTemplate,
dataKey: 'a'
};

var r = j2j.run(template, {
a: {
b: 'value'
}
});
console.log(r); // null
```


<a name="value" />
Expand Down
3 changes: 3 additions & 0 deletions lib/jsonapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,9 @@ var prototype = {
return this.runEngine(template, input, null, params);
},
runEngine: function (template, input, parent, params) {
if (template.skip === true) {
return null;
}
if (!this.evaluateExistsWhen(template, input, params)) {
return null;
}
Expand Down
7 changes: 7 additions & 0 deletions test/test-assign.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ var json2json = require('../index');
var case_0 = require('./test_cases/case-assign-0');
var case_1 = require('./test_cases/case-assign-1');
var case_2 = require('./test_cases/case-assign-2');
var case_3 = require('./test_cases/case-assign-3');

var expect = chai.expect;

Expand All @@ -27,4 +28,10 @@ describe('assign', function () {
var actual = engine.run(case_2.template, case_2.input);
expect(actual).to.deep.equal(case_2.expected);
});

it('case-assign-3: array', function () {
var actual = engine.run(case_3.template, case_3.input);
expect(actual).to.deep.equal(case_3.expected);
});

});
38 changes: 38 additions & 0 deletions test/test-examples.js
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,44 @@ describe('examples', function () {
expect(r2).to.equal(null);
});

it('skip usage', function () {
var template = {
content: {
dest_a: {
dataKey: 'a.c'
},
dest_b: {
content: {
dest_b0: {
dataKey: 'b.c'
},
dest_b1: {
dataKey: 'd'
}
},
dataKey: 'a',
skip: true
}
}
};

var input = {
a: {
b: {
c: 'value_0'
},
c: 'value_2',
d: 'value_1'
}
};

var r = j2j.run(template, input);
//console.log(r); // {dest_a: 'value_2'}
expect(r).to.deep.equal({
dest_a: 'value_2'
});
});

it('value - 0', function () {
var template = {
value: function (input) {
Expand Down
62 changes: 62 additions & 0 deletions test/test_cases/case-assign-3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
"use strict";

var dog = {
content: {
dogName: {
dataKey: 'name'
},
dogAge: {
value: function (input) {
return 2015 - input;
},
dataKey: 'birthYear'
}
},
skip: true,
dataKey: 'dog'
};

var person = {
content: {
personName: {
dataKey: 'name'
},
personAge: {
value: function (input) {
return 2015 - input;
},
dataKey: 'birthYear'
}
},
dataKey: 'person'
};

exports.template = {
assign: [{
constant: {
title: 'Person & Dog',
comment: 'dogs are good'
}
}, dog, person],
dataKey: 'team'
};

exports.input = {
team: {
person: {
name: 'DOE, JOE',
birthYear: 1980
},
dog: {
name: 'Paws',
birthYear: 2010
}
}
};

exports.expected = {
title: 'Person & Dog',
comment: 'dogs are good',
personName: 'DOE, JOE',
personAge: 35
};

0 comments on commit cf9da91

Please sign in to comment.