Skip to content

Commit 2a08153

Browse files
committed
Use prev to optimize functions a bit further
1 parent f6ec3d6 commit 2a08153

File tree

2 files changed

+8
-16
lines changed

2 files changed

+8
-16
lines changed

defaultMethods.js

+6-12
Original file line numberDiff line numberDiff line change
@@ -931,13 +931,13 @@ function numberCoercion (i, buildState) {
931931
defaultMethods['+'].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
938938
defaultMethods['%'].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
950950
defaultMethods['-'].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
962956
defaultMethods['/'].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
967961
defaultMethods['*'].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
972966
defaultMethods.cat.compile = function (data, buildState) {

legacy.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import { splitPathMemoized } from './utilities/splitPath.js'
44
import chainingSupported from './utilities/chainingSupported.js'
55
import { Sync, OriginalImpl } from './constants.js'
66

7-
8-
/** @type {Record<'get' | 'missing' | 'missing_some' | 'var', { method: (...args) => any }>} **/
7+
/** @type {Record<'get' | 'missing' | 'missing_some' | 'var', { method: (...args) => any }>} **/
98
const legacyMethods = {
109
get: {
1110
[Sync]: true,
@@ -159,5 +158,4 @@ const legacyMethods = {
159158
}
160159
}
161160

162-
163-
export default {...legacyMethods}
161+
export default { ...legacyMethods }

0 commit comments

Comments
 (0)