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 77 */
88
99function 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
Original file line number Diff line number Diff line change 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" : {
Original file line number Diff line number Diff line change 11var valid = require ( '../../lib/modifiers/type' ) ;
22
3- const str = 'Hello world ' ;
3+ const str = '42 ' ;
44const obj = { hello : 'world' } ;
55const num = 42 ;
66const 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
You can’t perform that action at this time.
0 commit comments