本文整理汇总了TypeScript中vs/workbench/services/search/node/fileSearch.FileWalker类的典型用法代码示例。如果您正苦于以下问题:TypeScript FileWalker类的具体用法?TypeScript FileWalker怎么用?TypeScript FileWalker使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了FileWalker类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: test
test('Find: exclude folder path', function (done: () => void) {
this.timeout(testTimeout);
if (platform.isWindows) {
done();
return;
}
const file0 = './examples/company.js';
const file1 = './examples/subfolder/subfile.txt';
const walker = new FileWalker({ folderQueries: ROOT_FOLDER_QUERY, excludePattern: { 'examples/something': true } });
const cmd1 = walker.spawnFindCmd(TEST_ROOT_FOLDER);
walker.readStdout(cmd1, 'utf8', /*isRipgrep=*/false, (err1, stdout1) => {
assert.equal(err1, null);
assert.notStrictEqual(stdout1.split('\n').indexOf(file0), -1, stdout1);
assert.notStrictEqual(stdout1.split('\n').indexOf(file1), -1, stdout1);
const walker = new FileWalker({ folderQueries: ROOT_FOLDER_QUERY, excludePattern: { 'examples/subfolder': true } });
const cmd2 = walker.spawnFindCmd(TEST_ROOT_FOLDER);
walker.readStdout(cmd2, 'utf8', /*isRipgrep=*/false, (err2, stdout2) => {
assert.equal(err2, null);
assert.notStrictEqual(stdout1.split('\n').indexOf(file0), -1, stdout1);
assert.strictEqual(stdout2.split('\n').indexOf(file1), -1, stdout2);
done();
});
});
});
示例2: test
test('Find: exclude multiple folders', function (done: () => void) {
if (platform.isWindows) {
done();
return;
}
const file0 = './index.html';
const file1 = './examples/small.js';
const file2 = './more/file.txt';
const walker = new FileWalker({ folderQueries: ROOT_FOLDER_QUERY, excludePattern: { '**/something': true } });
const cmd1 = walker.spawnFindCmd(TEST_ROOT_FOLDER);
walker.readStdout(cmd1, 'utf8', /*isRipgrep=*/false, (err1, stdout1) => {
assert.equal(err1, null);
assert.notStrictEqual(stdout1.split('\n').indexOf(file0), -1, stdout1);
assert.notStrictEqual(stdout1.split('\n').indexOf(file1), -1, stdout1);
assert.notStrictEqual(stdout1.split('\n').indexOf(file2), -1, stdout1);
const walker = new FileWalker({ folderQueries: ROOT_FOLDER_QUERY, excludePattern: { '{**/examples,**/more}': true } });
const cmd2 = walker.spawnFindCmd(TEST_ROOT_FOLDER);
walker.readStdout(cmd2, 'utf8', /*isRipgrep=*/false, (err2, stdout2) => {
assert.equal(err2, null);
assert.notStrictEqual(stdout1.split('\n').indexOf(file0), -1, stdout1);
assert.strictEqual(stdout2.split('\n').indexOf(file1), -1, stdout2);
assert.strictEqual(stdout2.split('\n').indexOf(file2), -1, stdout2);
done();
});
});
});
示例3: test
test('Find: exclude combination of paths', function (done: () => void) {
if (platform.isWindows) {
done();
return;
}
const walker = new FileWalker({ rootFolders: rootfolders() });
const filesIn = [
'./examples/subfolder/subfile.txt',
'./examples/company.js',
'./index.html'
];
const filesOut = [
'./examples/subfolder/anotherfolder/anotherfile.txt',
'./more/file.txt'
];
const cmd1 = walker.spawnFindCmd(rootfolders()[0], glob.parse({
'**/subfolder/anotherfolder': true,
'**/something/else': true,
'**/more': true,
'**/andmore': true
}));
walker.readStdout(cmd1, 'utf8', (err1, stdout1) => {
assert.equal(err1, null);
for (const fileIn of filesIn) {
assert.notStrictEqual(stdout1.split('\n').indexOf(fileIn), -1, stdout1);
}
for (const fileOut of filesOut) {
assert.strictEqual(stdout1.split('\n').indexOf(fileOut), -1, stdout1);
}
done();
});
});
示例4: FileWalker
walker.readStdout(cmd1, 'utf8', /*isRipgrep=*/false, (err1, stdout1) => {
assert.equal(err1, null);
assert.notStrictEqual(stdout1.split('\n').indexOf(file0), -1, stdout1);
assert.notStrictEqual(stdout1.split('\n').indexOf(file1), -1, stdout1);
const walker = new FileWalker({ folderQueries: ROOT_FOLDER_QUERY, excludePattern: { 'examples/subfolder': true } });
const cmd2 = walker.spawnFindCmd(TEST_ROOT_FOLDER);
walker.readStdout(cmd2, 'utf8', /*isRipgrep=*/false, (err2, stdout2) => {
assert.equal(err2, null);
assert.notStrictEqual(stdout1.split('\n').indexOf(file0), -1, stdout1);
assert.strictEqual(stdout2.split('\n').indexOf(file1), -1, stdout2);
done();
});
});
示例5: FileWalker
walker.readStdout(cmd1, 'utf8', (err1, stdout1) => {
assert.equal(err1, null);
assert.notStrictEqual(stdout1!.split('\n').indexOf(file0), -1, stdout1);
assert.notStrictEqual(stdout1!.split('\n').indexOf(file1), -1, stdout1);
const walker = new FileWalker({ type: QueryType.File, folderQueries: ROOT_FOLDER_QUERY, excludePattern: { '**/subfolder/anotherfolder': true } });
const cmd2 = walker.spawnFindCmd(TEST_ROOT_FOLDER);
walker.readStdout(cmd2, 'utf8', (err2, stdout2) => {
assert.equal(err2, null);
assert.notStrictEqual(stdout1!.split('\n').indexOf(file0), -1, stdout1);
assert.strictEqual(stdout2!.split('\n').indexOf(file1), -1, stdout2);
done();
});
});
示例6: test
test('Find: exclude combination of paths', function (done: () => void) {
this.timeout(testTimeout);
if (platform.isWindows) {
done();
return;
}
const filesIn = [
'./examples/subfolder/subfile.txt',
'./examples/company.js',
'./index.html'
];
const filesOut = [
'./examples/subfolder/anotherfolder/anotherfile.txt',
'./more/file.txt'
];
const walker = new FileWalker({
type: QueryType.File,
folderQueries: ROOT_FOLDER_QUERY,
excludePattern: {
'**/subfolder/anotherfolder': true,
'**/something/else': true,
'**/more': true,
'**/andmore': true
}
});
const cmd1 = walker.spawnFindCmd(TEST_ROOT_FOLDER);
walker.readStdout(cmd1, 'utf8', (err1, stdout1) => {
assert.equal(err1, null);
for (const fileIn of filesIn) {
assert.notStrictEqual(stdout1!.split('\n').indexOf(fileIn), -1, stdout1);
}
for (const fileOut of filesOut) {
assert.strictEqual(stdout1!.split('\n').indexOf(fileOut), -1, stdout1);
}
done();
});
});
示例7:
walker.readStdout(cmd1, 'utf8', (err1, stdout1) => {
assert.equal(err1, null);
assert.notStrictEqual(stdout1.split('\n').indexOf(file0), -1, stdout1);
assert.notStrictEqual(stdout1.split('\n').indexOf(file1), -1, stdout1);
const cmd2 = walker.spawnFindCmd(rootfolders()[0], glob.parse({ 'examples/subfolder': true }));
walker.readStdout(cmd2, 'utf8', (err2, stdout2) => {
assert.equal(err2, null);
assert.notStrictEqual(stdout1.split('\n').indexOf(file0), -1, stdout1);
assert.strictEqual(stdout2.split('\n').indexOf(file1), -1, stdout2);
done();
});
});
示例8: search
public search(onResult: (match: ISerializedFileMatch) => void, onProgress: (progress: IProgress) => void, done: (error: Error, isLimitHit: boolean) => void): void {
let resultCounter = 0;
let unwind = (processed: number) => {
this.worked += processed;
// Emit progress() unless we got canceled or hit the limit
if (processed && !this.isDone && !this.isCanceled && !this.limitReached) {
onProgress({ total: this.total, worked: this.worked });
}
// Emit done()
if (this.worked === this.total && this.walkerIsDone && !this.isDone) {
this.isDone = true;
done(this.walkerError, this.limitReached);
}
};
// Walk over the file system
this.walker.walk(this.rootFolders, this.extraFiles, (result) => {
this.total++;
// If the result is empty or we have reached the limit or we are canceled, ignore it
if (this.limitReached || this.isCanceled) {
return unwind(1);
}
// Indicate progress to the outside
onProgress({ total: this.total, worked: this.worked });
let fileMatch: FileMatch = null;
let doneCallback = (error?: Error) => {
if (!error && !this.isCanceled && fileMatch && !fileMatch.isEmpty()) {
onResult(fileMatch.serialize());
}
return unwind(1);
};
let perLineCallback = (line: string, lineNumber: number) => {
if (this.limitReached || this.isCanceled) {
return; // return early if canceled or limit reached
}
let lineMatch: LineMatch = null;
let match = this.contentPattern.exec(line);
// Record all matches into file result
while (match !== null && match[0].length > 0 && !this.limitReached && !this.isCanceled) {
resultCounter++;
if (this.maxResults && resultCounter >= this.maxResults) {
this.limitReached = true;
}
if (fileMatch === null) {
fileMatch = new FileMatch(result.path);
}
if (lineMatch === null) {
lineMatch = new LineMatch(line, lineNumber);
fileMatch.addMatch(lineMatch);
}
lineMatch.addMatch(match.index, match[0].length);
match = this.contentPattern.exec(line);
}
};
// Read lines buffered to support large files
this.readlinesAsync(result.path, perLineCallback, { bufferLength: 8096, encoding: this.fileEncoding }, doneCallback);
}, (error, isLimitHit) => {
this.walkerIsDone = true;
this.walkerError = error;
unwind(0 /* walker is done, indicate this back to our handler to be able to unwind */);
});
}