/usr/share/php/ApiGen/Scanner/Scanner.php is in php-apigen 4.1.2-1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | <?php
/**
* This file is part of the ApiGen (http://apigen.org)
*
* For the full copyright and license information, please view
* the file license.md that was distributed with this source code.
*/
namespace ApiGen\Scanner;
use Nette\Utils\Finder;
use RuntimeException;
use SplFileInfo;
class Scanner
{
/**
* @param array|string $source
* @param array $exclude
* @param array $extensions
* @throws RuntimeException
* @return SplFileInfo[]
*/
public function scan($source, array $exclude = [], array $extensions = ['php'])
{
$sources = $this->turnToIterator($source);
$fileMasks = $this->turnExtensionsToMask($extensions);
$files = [];
foreach ($sources as $source) {
$files = array_merge($files, $this->getFilesFromSource($source, $exclude, $fileMasks));
}
return $files;
}
/**
* @param string $source
* @param array $exclude
* @param string $fileMasks
* @return SplFileInfo[]
*/
private function getFilesFromSource($source, array $exclude, $fileMasks)
{
if (is_file($source)) {
$foundFiles[$source] = new SplFileInfo($source);
return $foundFiles;
} else {
$finder = Finder::findFiles($fileMasks)->exclude($exclude)
->from($source)->exclude($exclude);
return $this->convertFinderToArray($finder);
}
}
/**
* @param array|string $source
* @return array
*/
private function turnToIterator($source)
{
if ( ! is_array($source)) {
return [$source];
}
return $source;
}
/**
* @return array
*/
private function turnExtensionsToMask(array $extensions)
{
array_walk($extensions, function (&$value) {
$value = '*.' . $value;
});
return $extensions;
}
/**
* @return SplFileInfo[]
*/
private function convertFinderToArray(Finder $finder)
{
return iterator_to_array($finder->getIterator());
}
}
|