Skip to content

Commit bfe8e75

Browse files
committed
Minor optimizations and remove awkward lambda
1 parent c55794d commit bfe8e75

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

defaultMethods.js

+13-4
Original file line numberDiff line numberDiff line change
@@ -928,8 +928,17 @@ defaultMethods.if.compile = function (data, buildState) {
928928
*/
929929
function numberCoercion (i, buildState) {
930930
if (Array.isArray(i)) return 'precoerceNumber(NaN)'
931-
if (typeof i === 'string' || typeof i === 'number' || typeof i === 'boolean') return `precoerceNumber(+${buildString(i, buildState)})`
932-
return `(+precoerceNumber(${buildString(i, buildState)}))`
931+
932+
if (typeof i === 'number' || typeof i === 'boolean') return '+' + buildString(i, buildState)
933+
if (typeof i === 'string') return '+' + precoerceNumber(+i)
934+
935+
// check if it's already a number once built
936+
const f = buildString(i, buildState)
937+
938+
// regex match
939+
if (/^-?\d+(\.\d*)?$/.test(f)) return '+' + f
940+
941+
return `(+precoerceNumber(${f}))`
933942
}
934943

935944
// @ts-ignore Allow custom attribute
@@ -962,11 +971,11 @@ defaultMethods['/'].compile = function (data, buildState) {
962971
if (Array.isArray(data)) {
963972
return `(${data.map((i, x) => {
964973
let res = numberCoercion(i, buildState)
965-
if (x) res = `(${res}|| (() => { throw new Error('NaN') })() )`
974+
if (x) res = `precoerceNumber(${res} || NaN)`
966975
return res
967976
}).join(' / ')})`
968977
}
969-
return `(${buildString(data, buildState)}).reduce((a,b) => (+precoerceNumber(a))/(+precoerceNumber(b) || (() => { throw new Error('NaN') })() ))`
978+
return `(${buildString(data, buildState)}).reduce((a,b) => (+precoerceNumber(a))/(+precoerceNumber(b || NaN)))`
970979
}
971980
// @ts-ignore Allow custom attribute
972981
defaultMethods['*'].compile = function (data, buildState) {

0 commit comments

Comments
 (0)