Skip to content

Commit 244dd02

Browse files
committed
Added TransformerLoader service
1 parent e9a85e3 commit 244dd02

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

src/CodeTransformerKernel.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Okapi\CodeTransformer\Exception\Kernel\DirectKernelInitializationException;
66
use Okapi\CodeTransformer\Service\Options;
7+
use Okapi\CodeTransformer\Service\TransformerLoader;
78
use Okapi\Singleton\Singleton;
89

910
/**
@@ -56,6 +57,8 @@ public static function init(
5657
debug: $debug,
5758
);
5859

60+
TransformerLoader::addTransformers($instance->transformers);
61+
5962
$instance->registerServices();
6063
}
6164

@@ -71,6 +74,9 @@ protected function registerServices(): void
7174
{
7275
// Options provider
7376
Options::register();
77+
78+
// Load the user-defined transformers
79+
TransformerLoader::register();
7480
}
7581

7682
/**

src/Service/TransformerLoader.php

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
3+
namespace Okapi\CodeTransformer\Service;
4+
5+
use Okapi\Singleton\Singleton;
6+
7+
/**
8+
* # Transformer Loader
9+
*
10+
* The `TransformerLoader` class is used to load the code transformers.
11+
*/
12+
class TransformerLoader implements ServiceInterface
13+
{
14+
use Singleton;
15+
16+
/**
17+
* The list of transformers.
18+
*
19+
* @var class-string<Transformer>[]
20+
*/
21+
private array $transformers = [];
22+
23+
/**
24+
* Add transformers.
25+
*
26+
* @param class-string<Transformer>[] $transformers
27+
*
28+
* @return void
29+
*/
30+
public static function addTransformers(array $transformers): void
31+
{
32+
$instance = self::getInstance();
33+
34+
$instance->transformers = array_merge(
35+
$instance->transformers,
36+
$transformers,
37+
);
38+
}
39+
40+
/**
41+
* Register the transformer loader.
42+
*
43+
* @return void
44+
*/
45+
public static function register(): void
46+
{
47+
$instance = self::getInstance();
48+
$instance->ensureNotAlreadyInitialized();
49+
50+
// TODO: Load the transformers
51+
52+
$instance->setInitialized();
53+
}
54+
}

0 commit comments

Comments
 (0)