@@ -931,13 +931,13 @@ function numberCoercion (i, buildState) {
931931defaultMethods [ '+' ] . compile = function ( data , buildState ) {
932932 if ( Array . isArray ( data ) ) return `(${ data . map ( i => numberCoercion ( i , buildState ) ) . join ( ' + ' ) } )`
933933 if ( typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean' ) return `(+${ buildString ( data , buildState ) } )`
934- return `([].concat( ${ buildString ( data , buildState ) } )) .reduce((a,b) => (+a)+(+precoerceNumber(b)), 0)`
934+ return buildState . compile `(Array.isArray(prev = ${ data } ) ? prev .reduce((a,b) => (+a)+(+precoerceNumber(b)), 0) : +precoerceNumber(prev) )`
935935}
936936
937937// @ts -ignore Allow custom attribute
938938defaultMethods [ '%' ] . compile = function ( data , buildState ) {
939939 if ( Array . isArray ( data ) ) return `(${ data . map ( i => numberCoercion ( i , buildState ) ) . join ( ' % ' ) } )`
940- return `(${ buildString ( data , buildState ) } ).reduce((a,b) => (+a )%(+precoerceNumber(b)))`
940+ return `(${ buildString ( data , buildState ) } ).reduce((a,b) => (+precoerceNumber(a) )%(+precoerceNumber(b)))`
941941}
942942
943943// @ts -ignore Allow custom attribute
@@ -949,24 +949,18 @@ defaultMethods.in.compile = function (data, buildState) {
949949// @ts -ignore Allow custom attribute
950950defaultMethods [ '-' ] . compile = function ( data , buildState ) {
951951 if ( Array . isArray ( data ) ) return `${ data . length === 1 ? '-' : '' } (${ data . map ( i => numberCoercion ( i , buildState ) ) . join ( ' - ' ) } )`
952- if ( typeof data === 'string' || typeof data === 'number' ) {
953- return `(-${ buildString ( data , buildState ) } )`
954- } else {
955- return `((a=>(a.length===1?a[0]=-a[0]:a)&0||a)([].concat(${ buildString (
956- data ,
957- buildState
958- ) } ))).reduce((a,b) => (+a)-(+b))`
959- }
952+ if ( typeof data === 'string' || typeof data === 'number' ) return `(-${ buildString ( data , buildState ) } )`
953+ return buildState . compile `(Array.isArray(prev = ${ data } ) ? prev.length === 1 ? -precoerceNumber(prev[0]) : prev.reduce((a,b) => (+precoerceNumber(a))-(+precoerceNumber(b))) : -precoerceNumber(prev))`
960954}
961955// @ts -ignore Allow custom attribute
962956defaultMethods [ '/' ] . compile = function ( data , buildState ) {
963957 if ( Array . isArray ( data ) ) return `(${ data . map ( i => numberCoercion ( i , buildState ) ) . join ( ' / ' ) } )`
964- return `(${ buildString ( data , buildState ) } ).reduce((a,b) => (+a) /(+b ))`
958+ return `(${ buildString ( data , buildState ) } ).reduce((a,b) => (+precoerceNumber(a)) /(+precoerceNumber(b) ))`
965959}
966960// @ts -ignore Allow custom attribute
967961defaultMethods [ '*' ] . compile = function ( data , buildState ) {
968962 if ( Array . isArray ( data ) ) return `(${ data . map ( i => numberCoercion ( i , buildState ) ) . join ( ' * ' ) } )`
969- return `(${ buildString ( data , buildState ) } ).reduce((a,b) => (+a) *(+b ))`
963+ return `(${ buildString ( data , buildState ) } ).reduce((a,b) => (+precoerceNumber(a)) *(+precoerceNumber(b) ))`
970964}
971965// @ts -ignore Allow custom attribute
972966defaultMethods . cat . compile = function ( data , buildState ) {
0 commit comments