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