Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | 2x 2x 17x 17x 17x 17x 17x 47x 47x 47x 17x 17x 35x 35x 97x 62x 62x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 49x 15x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x | import * as vscode from 'vscode';
export function mockDocument(code: string, language: string, fileName?: string): vscode.TextDocument {
const lines = code.split('\n');
const uri = vscode.Uri.parse('untitled:virtual');
const ext = language === 'javascript' ? 'js' : language === 'typescript' ? 'ts' : language === 'css' ? 'css' : 'java';
const offsetAt = (p: vscode.Position): number => {
let offset = 0;
for (let i = 0; i < p.line; i++) offset += lines[i].length + 1;
return offset + p.character;
};
const positionAt = (offset: number): vscode.Position => {
let remaining = offset;
for (let i = 0; i < lines.length; i++) {
if (remaining <= lines[i].length) return new vscode.Position(i, remaining);
remaining -= lines[i].length + 1;
}
return new vscode.Position(lines.length - 1, lines[lines.length - 1].length);
};
return {
uri,
fileName: fileName ?? `untitled.${ext}`,
isUntitled: true,
languageId: language,
version: 1,
isDirty: false,
isClosed: false,
eol: vscode.EndOfLine.LF,
lineCount: lines.length,
getText: (range?: vscode.Range) => {
if (!range) { return code; }
return code.slice(offsetAt(range.start), offsetAt(range.end));
},
lineAt: (arg: number | vscode.Position) => {
const line = typeof arg === 'number' ? arg : arg.line;
const text = lines[line] ?? '';
return {
lineNumber: line,
text,
range: new vscode.Range(line, 0, line, text.length),
rangeIncludingLineBreak: new vscode.Range(line, 0, line, text.length),
firstNonWhitespaceCharacterIndex: text.search(/\S|$/),
isEmptyOrWhitespace: text.trim().length === 0,
};
},
offsetAt,
positionAt,
getWordRangeAtPosition: () => undefined,
validateRange: (r: vscode.Range) => r,
validatePosition: (p: vscode.Position) => p,
save: () => Promise.resolve(false),
} as unknown as vscode.TextDocument;
}
|