@@ -931,13 +931,13 @@ function numberCoercion (i, buildState) {
931
931
defaultMethods [ '+' ] . compile = function ( data , buildState ) {
932
932
if ( Array . isArray ( data ) ) return `(${ data . map ( i => numberCoercion ( i , buildState ) ) . join ( ' + ' ) } )`
933
933
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) )`
935
935
}
936
936
937
937
// @ts -ignore Allow custom attribute
938
938
defaultMethods [ '%' ] . compile = function ( data , buildState ) {
939
939
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)))`
941
941
}
942
942
943
943
// @ts -ignore Allow custom attribute
@@ -949,24 +949,18 @@ defaultMethods.in.compile = function (data, buildState) {
949
949
// @ts -ignore Allow custom attribute
950
950
defaultMethods [ '-' ] . compile = function ( data , buildState ) {
951
951
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))`
960
954
}
961
955
// @ts -ignore Allow custom attribute
962
956
defaultMethods [ '/' ] . compile = function ( data , buildState ) {
963
957
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) ))`
965
959
}
966
960
// @ts -ignore Allow custom attribute
967
961
defaultMethods [ '*' ] . compile = function ( data , buildState ) {
968
962
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) ))`
970
964
}
971
965
// @ts -ignore Allow custom attribute
972
966
defaultMethods . cat . compile = function ( data , buildState ) {
0 commit comments