mirror of
https://github.com/rectorphp/rector.git
synced 2024-05-29 15:30:51 +00:00
1dba11eab4
b852d706e3
Remove AffectedFilesCount as unused (#4094)
56 lines
2.2 KiB
PHP
56 lines
2.2 KiB
PHP
<?php
|
|
|
|
declare (strict_types=1);
|
|
namespace Rector\Core\Application;
|
|
|
|
use Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser;
|
|
use Rector\Core\PhpParser\NodeTraverser\RectorNodeTraverser;
|
|
use Rector\Core\PhpParser\Parser\RectorParser;
|
|
use Rector\Core\ValueObject\Application\File;
|
|
use Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator;
|
|
final class FileProcessor
|
|
{
|
|
/**
|
|
* @readonly
|
|
* @var \Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator
|
|
*/
|
|
private $nodeScopeAndMetadataDecorator;
|
|
/**
|
|
* @readonly
|
|
* @var \Rector\Core\PhpParser\Parser\RectorParser
|
|
*/
|
|
private $rectorParser;
|
|
/**
|
|
* @readonly
|
|
* @var \Rector\Core\PhpParser\NodeTraverser\RectorNodeTraverser
|
|
*/
|
|
private $rectorNodeTraverser;
|
|
/**
|
|
* @readonly
|
|
* @var \Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser
|
|
*/
|
|
private $fileWithoutNamespaceNodeTraverser;
|
|
public function __construct(NodeScopeAndMetadataDecorator $nodeScopeAndMetadataDecorator, RectorParser $rectorParser, RectorNodeTraverser $rectorNodeTraverser, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser)
|
|
{
|
|
$this->nodeScopeAndMetadataDecorator = $nodeScopeAndMetadataDecorator;
|
|
$this->rectorParser = $rectorParser;
|
|
$this->rectorNodeTraverser = $rectorNodeTraverser;
|
|
$this->fileWithoutNamespaceNodeTraverser = $fileWithoutNamespaceNodeTraverser;
|
|
}
|
|
public function parseFileInfoToLocalCache(File $file) : void
|
|
{
|
|
// store tokens by absolute path, so we don't have to print them right now
|
|
$stmtsAndTokens = $this->rectorParser->parseFileToStmtsAndTokens($file->getFilePath());
|
|
$oldStmts = $stmtsAndTokens->getStmts();
|
|
$oldTokens = $stmtsAndTokens->getTokens();
|
|
$newStmts = $this->nodeScopeAndMetadataDecorator->decorateNodesFromFile($file, $oldStmts);
|
|
$file->hydrateStmtsAndTokens($newStmts, $oldStmts, $oldTokens);
|
|
}
|
|
public function refactor(File $file) : void
|
|
{
|
|
$newStmts = $this->fileWithoutNamespaceNodeTraverser->traverse($file->getNewStmts());
|
|
$newStmts = $this->rectorNodeTraverser->traverse($newStmts);
|
|
$file->changeNewStmts($newStmts);
|
|
}
|
|
}
|