public static getHighlightCharacterIndexes()

in src/language/expressions/TLE.ts [782:826]


    public static getHighlightCharacterIndexes(context: TemplatePositionContext): number[] {
        assert(context);

        let highlightCharacterIndexes: number[] = [];

        if (context.tleInfo) {
            let tleParseResult = context.tleInfo.tleParseResult;
            let tleCharacterIndex = context.tleInfo.tleCharacterIndex;

            if (!!tleParseResult.leftSquareBracketToken && tleParseResult.leftSquareBracketToken.span.startIndex === tleCharacterIndex) {
                BraceHighlighter.addTLEBracketHighlights(highlightCharacterIndexes, tleParseResult);
            } else {
                let tleValue: Value | undefined = tleParseResult.getValueAtCharacterIndex(tleCharacterIndex);
                if (tleValue instanceof FunctionCallValue) {
                    if (!!tleValue.leftParenthesisToken && tleValue.leftParenthesisToken.span.startIndex === tleCharacterIndex) {
                        BraceHighlighter.addTLEFunctionHighlights(highlightCharacterIndexes, tleValue);
                    }
                } else if (tleValue instanceof ArrayAccessValue) {
                    if (tleValue.leftSquareBracketToken.span.startIndex === tleCharacterIndex) {
                        BraceHighlighter.addTLEArrayHighlights(highlightCharacterIndexes, tleValue);
                    }
                }
            }

            let leftOfTLECharacterIndex = tleCharacterIndex - 1;
            if (!!tleParseResult.rightSquareBracketToken
                && tleParseResult.rightSquareBracketToken.span.startIndex === leftOfTLECharacterIndex
            ) {
                BraceHighlighter.addTLEBracketHighlights(highlightCharacterIndexes, tleParseResult);
            } else if (0 <= leftOfTLECharacterIndex) {
                let tleValue: Value | undefined = tleParseResult.getValueAtCharacterIndex(leftOfTLECharacterIndex);
                if (tleValue instanceof FunctionCallValue) {
                    if (!!tleValue.rightParenthesisToken && tleValue.rightParenthesisToken.span.startIndex === leftOfTLECharacterIndex) {
                        BraceHighlighter.addTLEFunctionHighlights(highlightCharacterIndexes, tleValue);
                    }
                } else if (tleValue instanceof ArrayAccessValue) {
                    if (!!tleValue.rightSquareBracketToken && tleValue.rightSquareBracketToken.span.startIndex === leftOfTLECharacterIndex) {
                        BraceHighlighter.addTLEArrayHighlights(highlightCharacterIndexes, tleValue);
                    }
                }
            }
        }

        return highlightCharacterIndexes;
    }