1
0
Fork 0
php-language-server/src/FilesFinder/FileSystemFilesFinder.php

32 lines
857 B
PHP
Raw Normal View History

2016-12-08 01:33:48 +00:00
<?php
declare(strict_types = 1);
namespace LanguageServer\FilesFinder;
use Webmozart\Glob\Iterator\GlobIterator;
use Sabre\Event\Promise;
use function Sabre\Event\coroutine;
use function LanguageServer\{pathToUri, timeout};
class FileSystemFilesFinder implements FilesFinder
{
/**
* Returns all files in the workspace that match a glob.
* If the client does not support workspace/xfiles, it falls back to searching the file system directly.
*
* @param string $glob
* @return Promise <string[]>
*/
public function find(string $glob): Promise
{
return coroutine(function () use ($glob) {
$uris = [];
foreach (new GlobIterator($glob) as $path) {
$uris[] = pathToUri($path);
yield timeout();
}
return $uris;
});
}
}