UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

72 lines (64 loc) 1.86 kB
import { assert } from "../../assert.js"; import DataType from "./DataType.js"; import ParserError from "./ParserError.js"; import Token from "./Token.js"; /** * * @param {string} text * @param {number} cursor * @param {number} length * @returns {Token} */ export function readUnsignedIntegerToken(text, cursor, length) { assert.isString(text, 'text'); assert.isNonNegativeInteger(cursor, 'cursor'); assert.isNonNegativeInteger(length, 'length'); let i = cursor; let value = 0; main_loop: for (; i < length;) { const char = text.charAt(i); let digit; switch (char) { case '0': digit = 0; break; case '1': digit = 1; break; case '2': digit = 2; break; case '3': digit = 3; break; case '4': digit = 4; break; case '5': digit = 5; break; case '6': digit = 6; break; case '7': digit = 7; break; case '8': digit = 8; break; case '9': digit = 9; break; default: if (i === cursor) { //first character is not a digit throw new ParserError(i, `Expected a digit [0,1,2,3,4,5,6,7,8,9] but got '${char}' instead`, text); } //not a digit break main_loop; } i++; value = value * 10 + digit; } return new Token(value, cursor, i, "uint", DataType.Number); }