Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/editor/test/common/modesTestUtils.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
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 { LineTokens } from '../../common/tokens/lineTokens.js';
7
import { StandardTokenType, MetadataConsts } from '../../common/encodedTokenAttributes.js';
8
import { ScopedLineTokens, createScopedLineTokens } from '../../common/languages/supports.js';
9
import { LanguageIdCodec } from '../../common/services/languagesRegistry.js';
10
11
export interface TokenText {
12
text: string;
13
type: StandardTokenType;
14
}
15
16
export function createFakeScopedLineTokens(rawTokens: TokenText[]): ScopedLineTokens {
17
const tokens = new Uint32Array(rawTokens.length << 1);
18
let line = '';
19
20
for (let i = 0, len = rawTokens.length; i < len; i++) {
21
const rawToken = rawTokens[i];
22
23
const startOffset = line.length;
24
const metadata = (
25
(rawToken.type << MetadataConsts.TOKEN_TYPE_OFFSET)
26
) >>> 0;
27
28
tokens[(i << 1)] = startOffset;
29
tokens[(i << 1) + 1] = metadata;
30
line += rawToken.text;
31
}
32
33
LineTokens.convertToEndOffset(tokens, line.length);
34
return createScopedLineTokens(new LineTokens(tokens, line, new LanguageIdCodec()), 0);
35
}
36
37