in src/language/json/Tokenizer.ts [184:318]
public moveNext(): boolean {
if (!this.hasStarted()) {
this.nextCharacter();
}
if (!this.currentCharacter) {
this._currentToken = undefined;
} else {
switch (this.currentCharacter) {
case "{":
this._currentToken = LeftCurlyBracket;
this.nextCharacter();
break;
case "}":
this._currentToken = RightCurlyBracket;
this.nextCharacter();
break;
case "[":
this._currentToken = LeftSquareBracket;
this.nextCharacter();
break;
case "]":
this._currentToken = RightSquareBracket;
this.nextCharacter();
break;
case "(":
this._currentToken = LeftParenthesis;
this.nextCharacter();
break;
case ")":
this._currentToken = RightParenthesis;
this.nextCharacter();
break;
case "_":
this._currentToken = Underscore;
this.nextCharacter();
break;
case ".":
this._currentToken = Period;
this.nextCharacter();
break;
case "-":
this._currentToken = Dash;
this.nextCharacter();
break;
case "+":
this._currentToken = Plus;
this.nextCharacter();
break;
case ",":
this._currentToken = Comma;
this.nextCharacter();
break;
case ":":
this._currentToken = Colon;
this.nextCharacter();
break;
case `'`:
this._currentToken = SingleQuote;
this.nextCharacter();
break;
case `"`:
this._currentToken = DoubleQuote;
this.nextCharacter();
break;
case "\\":
this._currentToken = Backslash;
this.nextCharacter();
break;
case "/":
this._currentToken = ForwardSlash;
this.nextCharacter();
break;
case "*":
this._currentToken = Asterisk;
this.nextCharacter();
break;
case "\n":
this._currentToken = NewLine;
this.nextCharacter();
break;
case "\r":
this.nextCharacter();
// tslint:disable-next-line: strict-boolean-expressions // false positive - nextCharacter modifies this.currentCharacter from "\r" value
if (this.currentCharacter && this.currentCharacter.toString() === "\n") {
this._currentToken = CarriageReturnNewLine;
this.nextCharacter();
} else {
this._currentToken = CarriageReturn;
}
break;
case " ":
this._currentToken = Space;
this.nextCharacter();
break;
case "\t":
this._currentToken = Tab;
this.nextCharacter();
break;
default:
if (isLetter(this.currentCharacter)) {
this._currentToken = Letters(this.readWhile(isLetter));
} else if (isDigit(this.currentCharacter)) {
this._currentToken = Digits(this.readWhile(isDigit));
} else {
this._currentToken = Unrecognized(this.currentCharacter);
this.nextCharacter();
}
break;
}
}
return !!this._currentToken;
}