function _breakMultilineTokens()

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
}