@@ -47,10 +47,26 @@ const unitTestValues = (valueIds, unitTest) => {
4747
4848const nativeBricks = {
4949 arithmetic : {
50- "+" : ( a , b ) => a + b ,
51- "-" : ( a , b ) => a - b ,
52- "*" : ( a , b ) => a * b ,
53- "/" : ( a , b ) => a / b
50+ "+" : ( a , b ) => {
51+ if ( assert ( [ a , b ] , [ "number" , "number" ] ) )
52+ return a + b
53+ throw "Invalid parameters"
54+ } ,
55+ "-" : ( a , b ) => {
56+ if ( assert ( [ a , b ] , [ "number" , "number" ] ) )
57+ return a - b
58+ throw "Invalid parameters"
59+ } ,
60+ "*" : ( a , b ) => {
61+ if ( assert ( [ a , b ] , [ "number" , "number" ] ) )
62+ return a * b
63+ throw "Invalid parameters"
64+ } ,
65+ "/" : ( a , b ) => {
66+ if ( assert ( [ a , b ] , [ "number" , "number" ] ) )
67+ return a / b
68+ throw "Invalid parameters"
69+ }
5470 } ,
5571 boolean : {
5672 "&&" : ( a , b ) => a && b ,
@@ -65,17 +81,50 @@ const nativeBricks = {
6581 "sort" : ( a ) => a . slice ( 0 ) . sort ( )
6682 } ,
6783 parse : {
68- "toNumber" : ( a ) => parseFloat ( a ) ,
69- "toString" : ( a ) => a . toString ( ) ,
84+ "toNumber" : ( a ) => {
85+ if ( assert ( [ a ] , [ "string" ] ) )
86+ return parseFloat ( a )
87+ throw "Invalid parameters"
88+ } ,
89+ "toString" : ( a ) => {
90+ if ( assert ( [ a ] , [ "number" ] ) )
91+ return a . toString ( )
92+ throw "Invalid parameters"
93+ } ,
7094 } ,
7195 string : {
72- "concat" : ( a , b ) => a . concat ( b ) ,
73- "length" : ( a ) => a . length ,
74- "reverse" : ( a ) => a . split ( '' ) . reverse ( ) . join ( '' ) ,
75- "split" : ( a ) => a . split ( '' ) ,
96+ "concat" : ( a , b ) => {
97+ if ( assert ( [ a , b ] , [ "string" , "string" ] ) )
98+ return a . concat ( b )
99+ throw "Invalid parameters"
100+ } ,
101+ "length" : ( a ) => {
102+ if ( assert ( [ a ] , [ "string" ] ) )
103+ return a . length
104+ throw "Invalid parameters"
105+ } ,
106+ "reverse" : ( a ) => {
107+ if ( assert ( [ a ] , [ "string" ] ) )
108+ return a . split ( '' ) . reverse ( ) . join ( '' )
109+ throw "Invalid parameters"
110+ } ,
111+ "split" : ( a ) => {
112+ if ( assert ( [ a ] , [ "string" ] ) )
113+ return a . split ( '' )
114+ throw "Invalid parameters"
115+ } ,
76116 }
77117}
78118
119+ const assert = ( parameters , types ) => {
120+ for ( var i = 0 ; i < parameters . length ; i ++ ) {
121+ if ( typeof parameters [ i ] !== types [ i ] )
122+ return false
123+ }
124+
125+ return true
126+ }
127+
79128const parsers = {
80129 boolean : ( value ) => value . toLowerCase ( ) == "true" ,
81130 list : ( value ) => value . split ( ',' ) ,
0 commit comments