parseToken = (token, context) => {
const match = RE_TOKEN_CHAIN.exec(token);
return match
? match[0].split(".").reduce((r, v, i) => {
const m = RE_TOKEN.exec(v);
if (m.groups) {
const { number, decimal, unit, token } = m.groups;
const w = number
? evalNumber(
decimal ? parseFloat(number) : parseInt(number),
unit,
r
)
: evalToken(token, r);
return w;
} else {
return r;
}
return r;
}, context)
: token;
}