public moveNext()

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;
    }