PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace SebastianBergmann\CodeCoverage; use function array_keys; use function is_file; use function realpath; use function strpos; use SebastianBergmann\FileIterator\Facade as FileIteratorFacade; final class Filter { /** * @psalm-var array */ private $files = []; /** * @psalm-var array */ private $isFileCache = []; public function includeDirectory(string $directory, string $suffix = '.php', string $prefix = ''): void { foreach ((new FileIteratorFacade)->getFilesAsArray($directory, $suffix, $prefix) as $file) { $this->includeFile($file); } } /** * @psalm-param list $files */ public function includeFiles(array $filenames): void { foreach ($filenames as $filename) { $this->includeFile($filename); } } public function includeFile(string $filename): void { $filename = realpath($filename); if (!$filename) { return; } $this->files[$filename] = true; } public function excludeDirectory(string $directory, string $suffix = '.php', string $prefix = ''): void { foreach ((new FileIteratorFacade)->getFilesAsArray($directory, $suffix, $prefix) as $file) { $this->excludeFile($file); } } public function excludeFile(string $filename): void { $filename = realpath($filename); if (!$filename || !isset($this->files[$filename])) { return; } unset($this->files[$filename]); } public function isFile(string $filename): bool { if (isset($this->isFileCache[$filename])) { return $this->isFileCache[$filename]; } if ($filename === '-' || strpos($filename, 'vfs://') === 0 || strpos($filename, 'xdebug://debug-eval') !== false || strpos($filename, 'eval()\'d code') !== false || strpos($filename, 'runtime-created function') !== false || strpos($filename, 'runkit created function') !== false || strpos($filename, 'assert code') !== false || strpos($filename, 'regexp code') !== false || strpos($filename, 'Standard input code') !== false) { $isFile = false; } else { $isFile = is_file($filename); } $this->isFileCache[$filename] = $isFile; return $isFile; } public function isExcluded(string $filename): bool { return !isset($this->files[$filename]) || !$this->isFile($filename); } /** * @psalm-return list */ public function files(): array { return array_keys($this->files); } public function isEmpty(): bool { return empty($this->files); } }