/opt/cpanel/ea-wappspector/vendor/rector/rector/src/PostRector/Application
Edit: /opt/cpanel/ea-wappspector/vendor/rector/rector/src/PostRector/Application/PostFileProcessor.php (5583B)
skipper = $skipper;
$this->useAddingPostRector = $useAddingPostRector;
$this->nameImportingPostRector = $nameImportingPostRector;
$this->classRenamingPostRector = $classRenamingPostRector;
$this->docblockNameImportingPostRector = $docblockNameImportingPostRector;
$this->unusedImportRemovingPostRector = $unusedImportRemovingPostRector;
$this->renamedClassesDataCollector = $renamedClassesDataCollector;
}
public function reset() : void
{
$this->postRectors = [];
}
/**
* @param Stmt[] $stmts
* @return Stmt[]
*/
public function traverse(array $stmts, File $file) : array
{
foreach ($this->getPostRectors() as $postRector) {
// file must be set early into PostRector class to ensure its usage
// always match on skipping process
$postRector->setFile($file);
if ($this->shouldSkipPostRector($postRector, $file->getFilePath(), $stmts)) {
continue;
}
$nodeTraverser = new NodeTraverser();
$nodeTraverser->addVisitor($postRector);
$stmts = $nodeTraverser->traverse($stmts);
}
return $stmts;
}
/**
* @param Stmt[] $stmts
*/
private function shouldSkipPostRector(PostRectorInterface $postRector, string $filePath, array $stmts) : bool
{
if ($this->skipper->shouldSkipElementAndFilePath($postRector, $filePath)) {
return \true;
}
// skip renaming if rename class rector is skipped
if ($postRector instanceof ClassRenamingPostRector && $this->skipper->shouldSkipElementAndFilePath(RenameClassRector::class, $filePath)) {
return \true;
}
return !$postRector->shouldTraverse($stmts);
}
/**
* Load on the fly, to allow test reset with different configuration
* @return PostRectorInterface[]
*/
private function getPostRectors() : array
{
if ($this->postRectors !== []) {
return $this->postRectors;
}
$isRenamedClassEnabled = $this->renamedClassesDataCollector->getOldToNewClasses() !== [];
$isNameImportingEnabled = SimpleParameterProvider::provideBoolParameter(Option::AUTO_IMPORT_NAMES);
$isDocblockNameImportingEnabled = SimpleParameterProvider::provideBoolParameter(Option::AUTO_IMPORT_DOC_BLOCK_NAMES);
$isRemovingUnusedImportsEnabled = SimpleParameterProvider::provideBoolParameter(Option::REMOVE_UNUSED_IMPORTS);
$postRectors = [];
// sorted by priority, to keep removed imports in order
if ($isRenamedClassEnabled) {
$postRectors[] = $this->classRenamingPostRector;
}
// import names
if ($isNameImportingEnabled) {
$postRectors[] = $this->nameImportingPostRector;
}
// import docblocks
if ($isNameImportingEnabled && $isDocblockNameImportingEnabled) {
$postRectors[] = $this->docblockNameImportingPostRector;
}
$postRectors[] = $this->useAddingPostRector;
if ($isRemovingUnusedImportsEnabled) {
$postRectors[] = $this->unusedImportRemovingPostRector;
}
$this->postRectors = $postRectors;
return $this->postRectors;
}
}