Skip to content

Commit 11344ac

Browse files
authored
Merge pull request #24 from CodingCarlos/develop
Develop
2 parents fc758ec + c9a26f4 commit 11344ac

File tree

3 files changed

+21
-14
lines changed

3 files changed

+21
-14
lines changed

lib/modifiers/type.js

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,37 @@
77
*/
88

99
function modify(data, model) {
10-
if (!model.type) {
11-
return data;
12-
} else if(model.typeStrict == true) {
10+
if (!model.type || !data || model.typeStrict == true) {
1311
return data;
1412
}
1513

1614
let parsed = data;
1715

1816
switch (model.type.toLowerCase()) {
1917
case 'string':
20-
parsed = (data) ? String(data) : '';
18+
if (typeof data === 'object') {
19+
parsed = JSON.stringify(data);
20+
} else {
21+
parsed = String(data);
22+
}
2123
break;
2224
case 'number':
2325
if (!isNaN(Number(data))) {
2426
parsed = Number(data);
25-
} else {
26-
parsed = undefined;
2727
}
2828
break;
2929
case 'boolean':
3030
parsed = String(data).toLowerCase() === 'true';
3131
break;
3232
case 'object':
33-
parsed = (typeof data === 'object') ? data : undefined;
34-
break;
3533
case 'array':
36-
parsed = (Array.isArray(data)) ? data : undefined;
34+
if(typeof data === 'string') {
35+
try {
36+
data = JSON.parse(data)
37+
} catch (e) {
38+
console.error('Tried to parse invalid json string to ' + model.type.toLowerCase());
39+
}
40+
}
3741
break;
3842
}
3943

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "modelate",
3-
"version": "0.2.8",
3+
"version": "0.2.10",
44
"description": "A simple data modeling tool for NodeJS",
55
"main": "index.js",
66
"scripts": {

spec/modifiers/type.spec.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
var valid = require('../../lib/modifiers/type');
22

3-
const str = 'Hello world';
3+
const str = '42';
44
const obj = {hello: 'world'};
55
const num = 42;
66
const bool = true;
@@ -29,20 +29,23 @@ describe(' - Type modifier', () => {
2929
for (let validType in typesKeys) {
3030
let model = {type: typesKeys[validType]};
3131
for (let check in typesKeys) {
32+
33+
// ToDo: ReWrite tests to clarify the behaviour in each use-case
34+
3235
it('shall only validate '+ typesKeys[validType] +' when model set, and '+ typesKeys[check] +' given', () => {
3336
const modelated = valid(types[typesKeys[check]], model);
3437
let shallBeValid = (typeof modelated === typesKeys[validType]);
3538

36-
if (typesKeys[validType] === 'object' && typeof modelated === 'undefined') {
39+
if (typesKeys[validType] === 'object') { // && typeof modelated === 'undefined') {
3740
shallBeValid = true;
3841
}
3942

4043
if ((typesKeys[validType] === 'array' && Array.isArray(modelated))
41-
|| (typesKeys[validType] === 'array' && typeof modelated === 'undefined')) {
44+
|| (typesKeys[validType] === 'array')) { // && typeof modelated === 'undefined')) {
4245
shallBeValid = true;
4346
}
4447

45-
if (typesKeys[validType] === 'number' && typeof modelated === 'undefined') {
48+
if (typesKeys[validType] === 'number') { // && typeof modelated === 'undefined') {
4649
shallBeValid = true;
4750
}
4851

0 commit comments

Comments
 (0)