Skip to content

Commit ba6c4e2

Browse files
committed
Refactored "Finder" class to "TransformerContainer" methods
1 parent 4848926 commit ba6c4e2

File tree

4 files changed

+15
-87
lines changed

4 files changed

+15
-87
lines changed

src/Service/AutoloadInterceptor.php

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
use Composer\Autoload\ClassLoader as ComposerClassLoader;
66
use Okapi\CodeTransformer\Service\AutoloadInterceptor\ClassLoader;
7-
use Okapi\CodeTransformer\Util\Finder;
87
use Okapi\Singleton\Singleton;
98

109
/**
@@ -46,8 +45,6 @@ public static function register(): void
4645
*/
4746
private function overloadComposerLoaders(): void
4847
{
49-
$finder = $this->getFinder();
50-
5148
// Get existing composer loaders
5249
$loaders = spl_autoload_functions();
5350
foreach ($loaders as $loader) {
@@ -64,7 +61,7 @@ private function overloadComposerLoaders(): void
6461
}
6562

6663
// Register the AOP class loader
67-
$loader[0] = new ClassLoader($loader[0], $finder);
64+
$loader[0] = new ClassLoader($loader[0]);
6865

6966
// Unregister the original composer loader
7067
spl_autoload_unregister($loaderToUnregister);
@@ -73,15 +70,4 @@ private function overloadComposerLoaders(): void
7370
spl_autoload_register($loader);
7471
}
7572
}
76-
77-
/**
78-
* Get class finder.
79-
*
80-
* @return Finder
81-
*/
82-
private function getFinder(): Finder
83-
{
84-
return (new Finder)
85-
->includeClass(TransformerContainer::getTargetClasses());
86-
}
8773
}

src/Service/AutoloadInterceptor/ClassLoader.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
use Okapi\CodeTransformer\Service\Options;
99
use Okapi\CodeTransformer\Service\StreamFilter;
1010
use Okapi\CodeTransformer\Service\StreamFilter\FilterInjector;
11-
use Okapi\CodeTransformer\Util\Finder;
11+
use Okapi\CodeTransformer\Service\TransformerContainer;
1212
use Okapi\Path\Path;
13+
use Okapi\Wildcards\Regex;
1314

1415
/**
1516
* # Code Transformer Class Loader
@@ -27,13 +28,11 @@ class ClassLoader extends ComposerClassLoader
2728
* Code Transformer class loader constructor.
2829
*
2930
* @param ComposerClassLoader $original
30-
* @param Finder $finder
3131
*
3232
* @noinspection PhpMissingParentConstructorInspection (Parent already constructed)
3333
*/
3434
public function __construct(
3535
private readonly ComposerClassLoader $original,
36-
private readonly Finder $finder,
3736
) {}
3837

3938
/**
@@ -68,6 +67,11 @@ public function findFile($class): false|string
6867
{
6968
$filePath = $this->original->findFile($class);
7069

70+
// Prevent infinite recursion
71+
if ($class === Regex::class) {
72+
return $filePath;
73+
}
74+
7175
// @codeCoverageIgnoreStart
7276
// Not sure how to test this
7377
if ($filePath === false) {
@@ -78,7 +82,7 @@ public function findFile($class): false|string
7882
$filePath = Path::resolve($filePath);
7983

8084
// Check if the class should be transformed
81-
if ($this->finder->hasClass($class)) {
85+
if (TransformerContainer::shouldTransform($class)) {
8286
$cacheState = CacheStateManager::queryCacheState($filePath);
8387

8488
// Check if the file is cached and up to date

src/Service/TransformerContainer.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,16 +116,18 @@ private function loadTransformers(): void
116116
// endregion
117117

118118
/**
119-
* Get the list of target classes.
119+
* Check if the class should be transformed.
120120
*
121-
* @return class-string[]
121+
* @param string $className
122+
*
123+
* @return bool
122124
*/
123-
public static function getTargetClasses(): array
125+
public static function shouldTransform(string $className): bool
124126
{
125127
$instance = self::getInstance();
126128
$instance->ensureInitialized();
127129

128-
return array_keys($instance->transformerTargets);
130+
return $instance->matchTransformers($className) !== [];
129131
}
130132

131133
// region Transform Code

src/Util/Finder.php

Lines changed: 0 additions & 64 deletions
This file was deleted.

0 commit comments

Comments
 (0)