in server/aws-lsp-partiql/src/server/syntax-highlighting/parser-tokens.ts [89:132]
function _breakMultilineTokens(tokens: SemanticToken[]): SemanticToken[] {
const breakDownTokens: SemanticToken[] = []
for (const token of tokens) {
const startLine = token.range.start.line
const endLine = token.range.end.line
const startCharacter = token.range.start.character
const endCharacter = token.range.end.character
const originalLength = token.tokenLength
if (startLine === endLine) {
breakDownTokens.push(token)
} else {
const FirstToken: SemanticToken = {
range: {
start: { line: startLine, character: startCharacter },
end: { line: startLine, character: startCharacter + originalLength },
},
tokenType: token.tokenType,
tokenLength: originalLength,
}
breakDownTokens.push(FirstToken)
for (let i = startLine + 1; i < endLine; i++) {
const innerToken: SemanticToken = {
range: {
start: { line: i, character: 0 },
end: { line: i, character: originalLength },
},
tokenType: token.tokenType,
tokenLength: originalLength,
}
breakDownTokens.push(innerToken)
}
const lastToken: SemanticToken = {
range: {
start: { line: endLine, character: 0 },
end: { line: endLine, character: endCharacter },
},
tokenType: token.tokenType,
tokenLength: endCharacter,
}
breakDownTokens.push(lastToken)
}
}
return breakDownTokens
}