Update website
This commit is contained in:
parent
4413528994
commit
1d90fbf296
6865 changed files with 1091082 additions and 0 deletions
71
vendor/doctrine/rst-parser/lib/Toc/GlobSearcher.php
vendored
Normal file
71
vendor/doctrine/rst-parser/lib/Toc/GlobSearcher.php
vendored
Normal file
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Doctrine\RST\Toc;
|
||||
|
||||
use Doctrine\RST\Environment;
|
||||
use Symfony\Component\Finder\Finder;
|
||||
|
||||
use function array_merge;
|
||||
use function realpath;
|
||||
use function rtrim;
|
||||
use function str_replace;
|
||||
use function strrpos;
|
||||
use function substr;
|
||||
|
||||
class GlobSearcher
|
||||
{
|
||||
/**
|
||||
* Returns array of absolute URL strings.
|
||||
*
|
||||
* For example, if you were glob'ing from inside a file called
|
||||
* "subdir/file.rst", it would return paths like "/subdir/other-file"
|
||||
* and "/subdir/more-dir/file2".
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
public function globSearch(Environment $environment, string $globPattern): array
|
||||
{
|
||||
$currentFilePath = (string) realpath(rtrim($environment->absoluteRelativePath(''), '/'));
|
||||
|
||||
$rootDocPath = rtrim(str_replace($environment->getDirName(), '', $currentFilePath), '/');
|
||||
|
||||
if ($globPattern[0] === '/') {
|
||||
$globPatternPath = $rootDocPath . $globPattern;
|
||||
} else {
|
||||
$globPatternPath = $currentFilePath . '/' . $globPattern;
|
||||
}
|
||||
|
||||
$pos = strrpos($globPatternPath, '/');
|
||||
$globPatternFile = $pos === false ? $globPatternPath : substr($globPatternPath, $pos + 1);
|
||||
$globPatternPath = $pos === false ? '' : substr($globPatternPath, 0, $pos);
|
||||
|
||||
$allFiles = [];
|
||||
|
||||
$finder = new Finder();
|
||||
$finder->in($globPatternPath)
|
||||
->name($globPatternFile . '.rst')
|
||||
->files();
|
||||
|
||||
foreach ($finder as $file) {
|
||||
if ($file->isDir()) {
|
||||
// remove the root directory so it is a relative path from the root
|
||||
$relativePath = str_replace($rootDocPath, '', (string) $file->getRealPath());
|
||||
|
||||
// recursively search in this directory
|
||||
$dirFiles = $this->globSearch($environment, $relativePath . '/*');
|
||||
|
||||
$allFiles = array_merge($allFiles, $dirFiles);
|
||||
} else {
|
||||
// Trim the root path and the .rst extension. This is what the
|
||||
// RST parser requires to add a dependency.
|
||||
$file = str_replace([$rootDocPath, '.rst'], '', (string) $file->getRealPath());
|
||||
|
||||
$allFiles[] = $file;
|
||||
}
|
||||
}
|
||||
|
||||
return $allFiles;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue