editorConfigParser = $editorConfigParser; $this->parameterProvider = $parameterProvider; $this->fileFormatters = $fileFormatters; } /** * @param File[] $files */ public function format(array $files) : void { foreach ($files as $file) { if (!$file->hasChanged()) { continue; } foreach ($this->fileFormatters as $fileFormatter) { if (!$fileFormatter->supports($file)) { continue; } $editorConfigConfigurationBuilder = $fileFormatter->createDefaultEditorConfigConfigurationBuilder(); $this->sniffOriginalFileContent($file, $editorConfigConfigurationBuilder); $editorConfiguration = $this->createEditorConfiguration($file, $editorConfigConfigurationBuilder); $fileFormatter->format($file, $editorConfiguration); } } } private function sniffOriginalFileContent(\Rector\Core\ValueObject\Application\File $file, \Rector\FileFormatter\ValueObjectFactory\EditorConfigConfigurationBuilder $editorConfigConfigurationBuilder) : void { // Try to sniff into the original content to get the indentation and new line try { $indent = \Rector\FileFormatter\ValueObject\Indent::fromContent($file->getOriginalFileContent()); $editorConfigConfigurationBuilder->withIndent($indent); } catch (\Rector\FileFormatter\Exception\ParseIndentException $exception) { } try { $newLine = \Rector\FileFormatter\ValueObject\NewLine::fromContent($file->getOriginalFileContent()); $editorConfigConfigurationBuilder->withNewLine($newLine); } catch (\Rector\FileFormatter\Exception\InvalidNewLineStringException $exception) { } } private function createEditorConfiguration(\Rector\Core\ValueObject\Application\File $file, \Rector\FileFormatter\ValueObjectFactory\EditorConfigConfigurationBuilder $editorConfigConfigurationBuilder) : \Rector\FileFormatter\ValueObject\EditorConfigConfiguration { if (!$this->parameterProvider->provideBoolParameter(\Rector\Core\Configuration\Option::ENABLE_EDITORCONFIG)) { return $editorConfigConfigurationBuilder->build(); } return $this->editorConfigParser->extractConfigurationForFile($file, $editorConfigConfigurationBuilder); } }