Skip to content

Commit

Permalink
[TASK] Simplify configuration for rules and runner
Browse files Browse the repository at this point in the history
  • Loading branch information
sabbelasichon committed Apr 16, 2024
1 parent 7a0cc7e commit 63ddc46
Show file tree
Hide file tree
Showing 10 changed files with 21 additions and 100 deletions.
11 changes: 10 additions & 1 deletion fractor-xml/config/application.php
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
<?php

use a9f\FractorXml\Contract\XmlFractor;
use a9f\FractorXml\XmlFileProcessor;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use function Symfony\Component\DependencyInjection\Loader\Configurator\tagged_iterator;

return static function (ContainerConfigurator $containerConfigurator): void {
return static function (ContainerConfigurator $containerConfigurator, ContainerBuilder $containerBuilder): void {
$services = $containerConfigurator->services();
$services->defaults()
->autowire()
->autoconfigure();

$services->load('a9f\\FractorXml\\', __DIR__ . '/../src/');


$services->set(XmlFileProcessor::class)->arg('$rules', tagged_iterator('fractor.xml_rule'));

$containerBuilder->registerForAutoconfiguration(XmlFractor::class)->addTag('fractor.xml_rule');
};
8 changes: 0 additions & 8 deletions fractor-xml/config/fractor.php

This file was deleted.

2 changes: 1 addition & 1 deletion fractor-xml/src/AbstractXmlFractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use a9f\FractorXml\Contract\DomNodeVisitor;
use a9f\FractorXml\Contract\XmlFractor;

abstract class AbstractXmlFractor implements DomNodeVisitor, XmlFractor, FractorRule
abstract class AbstractXmlFractor implements DomNodeVisitor, XmlFractor
{
public function beforeTraversal(\DOMNode $rootNode): void
{
Expand Down
34 changes: 0 additions & 34 deletions fractor-xml/src/DependencyInjection/XmlFractorCompilerPass.php

This file was deleted.

2 changes: 1 addition & 1 deletion fractor-xml/src/XmlFileProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ final class XmlFileProcessor implements FileProcessor
/**
* @param list<XmlFractor> $rules
*/
public function __construct(private readonly array $rules)
public function __construct(private readonly iterable $rules)
{
}

Expand Down
10 changes: 8 additions & 2 deletions fractor/config/application.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
<?php

use a9f\Fractor\Configuration\FractorConfig;
use a9f\Fractor\FractorApplication;
use a9f\Fractor\Contract\FileProcessor;
use a9f\Fractor\Fractor\FractorRunner;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use function Symfony\Component\DependencyInjection\Loader\Configurator\tagged_iterator;

return static function (ContainerConfigurator $containerConfigurator): void {
return static function (ContainerConfigurator $containerConfigurator, ContainerBuilder $containerBuilder): void {
$services = $containerConfigurator->services();
$services->defaults()
->autowire()
Expand All @@ -14,6 +17,9 @@
$services->load('a9f\\Fractor\\', __DIR__ . '/../src/')
->exclude('../src/Configuration/');

$services->set(FractorRunner::class)->arg('$processors', tagged_iterator('fractor.file_processor'));
$services->set(FractorConfig::class)
->lazy();

$containerBuilder->registerForAutoconfiguration(FileProcessor::class)->addTag('fractor.file_processor');
};
7 changes: 0 additions & 7 deletions fractor/src/Contract/FractorRule.php

This file was deleted.

This file was deleted.

21 changes: 0 additions & 21 deletions fractor/src/DependencyInjection/ContainerBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

use a9f\Fractor\Configuration\FractorConfig;
use a9f\Fractor\DependencyInjection\CompilerPass\CommandsCompilerPass;
use a9f\Fractor\DependencyInjection\CompilerPass\FileProcessorCompilerPass;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\DependencyInjection\ContainerInterface;
Expand All @@ -28,7 +27,6 @@ public function createDependencyInjectionContainer(?string $fractorConfigFile, a
$this->importExtensionConfigurations($config);

$config->addCompilerPass(new CommandsCompilerPass());
$config->addCompilerPass(new FileProcessorCompilerPass());

if ($fractorConfigFile !== null && is_file($fractorConfigFile)) {
$config->import($fractorConfigFile);
Expand All @@ -39,30 +37,11 @@ public function createDependencyInjectionContainer(?string $fractorConfigFile, a
$fileLoader->load($additionalConfigFile);
}

$this->registerConfiguredRules($config);
$this->registerConfiguredFileProcessors($config);

$config->compile();

return $config;
}

private function registerConfiguredRules(FractorConfig $config): void
{
foreach ($config->getRules() as $rule) {
$config->registerForAutoconfiguration($rule)
->addTag('fractor.rule');
}
}

private function registerConfiguredFileProcessors(FractorConfig $config): void
{
foreach ($config->getFileProcessors() as $processor) {
$config->registerForAutoconfiguration($processor)
->addTag('fractor.file_processor');
}
}

private function importExtensionConfigurations(FractorConfig $config): void
{
if (!class_exists('a9f\\FractorExtensionInstaller\\Generated\\InstalledPackages')) {
Expand Down
2 changes: 1 addition & 1 deletion fractor/tests/Helper/Contract/TextRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

use a9f\Fractor\Contract\FractorRule;

interface TextRule extends FractorRule
interface TextRule
{
public function apply(string $fileContent): string;
}

0 comments on commit 63ddc46

Please sign in to comment.