File tree Expand file tree Collapse file tree 3 files changed +21
-14
lines changed Expand file tree Collapse file tree 3 files changed +21
-14
lines changed Original file line number Diff line number Diff line change 7
7
*/
8
8
9
9
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 ) {
13
11
return data ;
14
12
}
15
13
16
14
let parsed = data ;
17
15
18
16
switch ( model . type . toLowerCase ( ) ) {
19
17
case 'string' :
20
- parsed = ( data ) ? String ( data ) : '' ;
18
+ if ( typeof data === 'object' ) {
19
+ parsed = JSON . stringify ( data ) ;
20
+ } else {
21
+ parsed = String ( data ) ;
22
+ }
21
23
break ;
22
24
case 'number' :
23
25
if ( ! isNaN ( Number ( data ) ) ) {
24
26
parsed = Number ( data ) ;
25
- } else {
26
- parsed = undefined ;
27
27
}
28
28
break ;
29
29
case 'boolean' :
30
30
parsed = String ( data ) . toLowerCase ( ) === 'true' ;
31
31
break ;
32
32
case 'object' :
33
- parsed = ( typeof data === 'object' ) ? data : undefined ;
34
- break ;
35
33
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
+ }
37
41
break ;
38
42
}
39
43
Original file line number Diff line number Diff line change 1
1
{
2
2
"name" : " modelate" ,
3
- "version" : " 0.2.8 " ,
3
+ "version" : " 0.2.10 " ,
4
4
"description" : " A simple data modeling tool for NodeJS" ,
5
5
"main" : " index.js" ,
6
6
"scripts" : {
Original file line number Diff line number Diff line change 1
1
var valid = require ( '../../lib/modifiers/type' ) ;
2
2
3
- const str = 'Hello world ' ;
3
+ const str = '42 ' ;
4
4
const obj = { hello : 'world' } ;
5
5
const num = 42 ;
6
6
const bool = true ;
@@ -29,20 +29,23 @@ describe(' - Type modifier', () => {
29
29
for ( let validType in typesKeys ) {
30
30
let model = { type : typesKeys [ validType ] } ;
31
31
for ( let check in typesKeys ) {
32
+
33
+ // ToDo: ReWrite tests to clarify the behaviour in each use-case
34
+
32
35
it ( 'shall only validate ' + typesKeys [ validType ] + ' when model set, and ' + typesKeys [ check ] + ' given' , ( ) => {
33
36
const modelated = valid ( types [ typesKeys [ check ] ] , model ) ;
34
37
let shallBeValid = ( typeof modelated === typesKeys [ validType ] ) ;
35
38
36
- if ( typesKeys [ validType ] === 'object' && typeof modelated === 'undefined' ) {
39
+ if ( typesKeys [ validType ] === 'object' ) { // && typeof modelated === 'undefined') {
37
40
shallBeValid = true ;
38
41
}
39
42
40
43
if ( ( typesKeys [ validType ] === 'array' && Array . isArray ( modelated ) )
41
- || ( typesKeys [ validType ] === 'array' && typeof modelated === 'undefined' ) ) {
44
+ || ( typesKeys [ validType ] === 'array' ) ) { // && typeof modelated === 'undefined')) {
42
45
shallBeValid = true ;
43
46
}
44
47
45
- if ( typesKeys [ validType ] === 'number' && typeof modelated === 'undefined' ) {
48
+ if ( typesKeys [ validType ] === 'number' ) { // && typeof modelated === 'undefined') {
46
49
shallBeValid = true ;
47
50
}
48
51
You can’t perform that action at this time.
0 commit comments