File tree Expand file tree Collapse file tree 2 files changed +60
-0
lines changed
Expand file tree Collapse file tree 2 files changed +60
-0
lines changed Original file line number Diff line number Diff line change 44
55use Okapi \CodeTransformer \Exception \Kernel \DirectKernelInitializationException ;
66use Okapi \CodeTransformer \Service \Options ;
7+ use Okapi \CodeTransformer \Service \TransformerLoader ;
78use 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 /**
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments