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 4
4
5
5
use Okapi \CodeTransformer \Exception \Kernel \DirectKernelInitializationException ;
6
6
use Okapi \CodeTransformer \Service \Options ;
7
+ use Okapi \CodeTransformer \Service \TransformerLoader ;
7
8
use Okapi \Singleton \Singleton ;
8
9
9
10
/**
@@ -56,6 +57,8 @@ public static function init(
56
57
debug: $ debug ,
57
58
);
58
59
60
+ TransformerLoader::addTransformers ($ instance ->transformers );
61
+
59
62
$ instance ->registerServices ();
60
63
}
61
64
@@ -71,6 +74,9 @@ protected function registerServices(): void
71
74
{
72
75
// Options provider
73
76
Options::register ();
77
+
78
+ // Load the user-defined transformers
79
+ TransformerLoader::register ();
74
80
}
75
81
76
82
/**
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