in frontend/app/common/classes/sorting.ts [1:32]
function consumeNumber(s: string, i: number): number {
const State = {NATURAL: 0, REAL: 1, EXPONENT_SIGN: 2, EXPONENT: 3};
let state = State.NATURAL;
for (; i < s.length; i++) {
if (state === State.NATURAL) {
if (s[i] === '.') {
state = State.REAL;
} else if (s[i] === 'e' || s[i] === 'E') {
state = State.EXPONENT_SIGN;
} else if (!isDigit(s[i])) {
break;
}
} else if (state === State.REAL) {
if (s[i] === 'e' || s[i] === 'E') {
state = State.EXPONENT_SIGN;
} else if (!isDigit(s[i])) {
break;
}
} else if (state === State.EXPONENT_SIGN) {
if (isDigit(s[i]) || s[i] === '+' || s[i] === '-') {
state = State.EXPONENT;
} else {
break;
}
} else if (state === State.EXPONENT) {
if (!isDigit(s[i])) {
break;
}
}
}
return i;
}