1
>
/*---------------------------------------------------------------------------------------------
lineTokens.ts
2
>
* Copyright (c) Microsoft Corporation. All rights reserved.
3
>
* Licensed under the MIT License. See License.txt in the project root for license information.
4
>
*--------------------------------------------------------------------------------------------*/
5
>
6
>
import { ILanguageIdCodec } from '../languages.js';
7
>
import { FontStyle, ColorId, StandardTokenType, MetadataConsts, ITokenPresentation, TokenMetadata } from '../encodedTokenAttributes.js';
8
>
import { IPosition } from '../core/position.js';
9
>
import { ITextModel } from '../model.js';
10
>
import { OffsetRange } from '../core/ranges/offsetRange.js';
11
>
import { onUnexpectedError } from '../../../base/common/errors.js';
12
>
13
>
14
>
export interface IViewLineTokens {
15
>
languageIdCodec: ILanguageIdCodec;
16
>
equals(other: IViewLineTokens): boolean;
17
>
getCount(): number;
18
>
getStandardTokenType(tokenIndex: number): StandardTokenType;
19
>
getForeground(tokenIndex: number): ColorId;
20
>
getEndOffset(tokenIndex: number): number;
21
>
getClassName(tokenIndex: number): string;
22
>
getInlineStyle(tokenIndex: number, colorMap: string[]): string;
23
>
getPresentation(tokenIndex: number): ITokenPresentation;
24
>
findTokenIndexAtOffset(offset: number): number;
25
>
getLineContent(): string;
26
>
getMetadata(tokenIndex: number): number;
27
>
getLanguageId(tokenIndex: number): string;
28
>
getTokenText(tokenIndex: number): string;
29
>
forEach(callback: (tokenIndex: number) => void): void;
30
>
}
31
>
32
>
export class LineTokens implements IViewLineTokens {
33
>
public static createEmpty(lineContent: string, decoder: ILanguageIdCodec): LineTokens {
34
>
const defaultMetadata = LineTokens.defaultTokenMetadata;
35
>
36
>
const tokens = new Uint32Array(2);
37
>
tokens[0] = lineContent.length;
38
>
tokens[1] = defaultMetadata;
39
>
40
>
return new LineTokens(tokens, lineContent, decoder);
41
>
}
42
>
43
>
public static createFromTextAndMetadata(data: { text: string; metadata: number }[], decoder: ILanguageIdCodec): LineTokens {
44
let offset: number = 0;
45
let fullText: string = '';