66use Symfony \Component \Config \Definition \Builder \TreeBuilder ;
77use Symfony \Component \Config \Definition \NodeInterface ;
88use Symfony \Component \ExpressionLanguage \Expression ;
9+ use function Kiboko \Component \SatelliteToolbox \Configuration \mutuallyExclusiveFields ;
10+ use function Kiboko \Component \SatelliteToolbox \Configuration \mutuallyDependentFields ;
911
1012final class Configuration implements PluginConfigurationInterface
1113{
@@ -22,7 +24,7 @@ public function getConfigTreeBuilder()
2224 ->always ($ this ->cleanupFields ('conditional ' , 'expression_language ' , 'map ' , 'list ' , 'object ' , 'collection ' ))
2325 ->end ()
2426 ->validate ()
25- ->always ($ this -> mutuallyExclusiveFields ('conditional ' , 'map ' , 'list ' , 'object ' , 'collection ' ))
27+ ->always (mutuallyExclusiveFields ('conditional ' , 'map ' , 'list ' , 'object ' , 'collection ' ))
2628 ->end ()
2729 ->children ()
2830 ->scalarNode ('class ' )->end ()
@@ -43,34 +45,34 @@ public function getConfigTreeBuilder()
4345 ->thenInvalid ('Your configuration should be an array. ' )
4446 ->end ()
4547 ->validate ()
46- ->always ($ this -> mutuallyExclusiveFields ('copy ' , 'expression ' , 'constant ' , 'class ' , 'map ' , 'object ' , 'list ' , 'collection ' ))
48+ ->always (mutuallyExclusiveFields ('copy ' , 'expression ' , 'constant ' , 'class ' , 'map ' , 'object ' , 'list ' , 'collection ' ))
4749 ->end ()
4850 ->validate ()
49- ->always ($ this -> mutuallyExclusiveFields ('expression ' , 'copy ' , 'constant ' , 'map ' ))
51+ ->always (mutuallyExclusiveFields ('expression ' , 'copy ' , 'constant ' , 'map ' ))
5052 ->end ()
5153 ->validate ()
52- ->always ($ this -> mutuallyExclusiveFields ('constant ' , 'copy ' , 'expression ' , 'class ' , 'map ' , 'object ' , 'list ' , 'collection ' ))
54+ ->always (mutuallyExclusiveFields ('constant ' , 'copy ' , 'expression ' , 'class ' , 'map ' , 'object ' , 'list ' , 'collection ' ))
5355 ->end ()
5456 ->validate ()
55- ->always ($ this -> mutuallyExclusiveFields ('map ' , 'copy ' , 'expression ' , 'constant ' , 'class ' , 'object ' , 'list ' , 'collection ' ))
57+ ->always (mutuallyExclusiveFields ('map ' , 'copy ' , 'expression ' , 'constant ' , 'class ' , 'object ' , 'list ' , 'collection ' ))
5658 ->end ()
5759 ->validate ()
58- ->always ($ this -> mutuallyExclusiveFields ('object ' , 'copy ' , 'constant ' , 'map ' , 'list ' , 'collection ' ))
60+ ->always (mutuallyExclusiveFields ('object ' , 'copy ' , 'constant ' , 'map ' , 'list ' , 'collection ' ))
5961 ->end ()
6062 ->validate ()
61- ->always ($ this -> mutuallyExclusiveFields ('list ' , 'copy ' , 'constant ' , 'class ' , 'map ' , 'object ' , 'collection ' ))
63+ ->always (mutuallyExclusiveFields ('list ' , 'copy ' , 'constant ' , 'class ' , 'map ' , 'object ' , 'collection ' ))
6264 ->end ()
6365 ->validate ()
64- ->always ($ this -> mutuallyExclusiveFields ('collection ' , 'copy ' , 'constant ' , 'map ' , 'object ' , 'list ' ))
66+ ->always (mutuallyExclusiveFields ('collection ' , 'copy ' , 'constant ' , 'map ' , 'object ' , 'list ' ))
6567 ->end ()
6668 ->validate ()
67- ->always ($ this -> mutuallyDependentFields ('object ' , 'class ' , 'expression ' ))
69+ ->always (mutuallyDependentFields ('object ' , 'class ' , 'expression ' ))
6870 ->end ()
6971 ->validate ()
70- ->always ($ this -> mutuallyDependentFields ('collection ' , 'class ' , 'expression ' ))
72+ ->always (mutuallyDependentFields ('collection ' , 'class ' , 'expression ' ))
7173 ->end ()
7274 ->validate ()
73- ->always ($ this -> mutuallyDependentFields ('list ' , 'expression ' ))
75+ ->always (mutuallyDependentFields ('list ' , 'expression ' ))
7476 ->end ()
7577 ;
7678
@@ -141,48 +143,6 @@ private function getCollectionNode(): NodeInterface
141143 return $ definition ->getNode (true );
142144 }
143145
144- private function mutuallyExclusiveFields (string $ field , string ...$ exclusions ): \Closure
145- {
146- return function (array $ value ) use ($ field , $ exclusions ) {
147- if (!array_key_exists ($ field , $ value )) {
148- return $ value ;
149- }
150-
151- foreach ($ exclusions as $ exclusion ) {
152- if (array_key_exists ($ exclusion , $ value )) {
153- throw new \InvalidArgumentException (sprintf (
154- 'Your configuration should either contain the "%s" or the "%s" field, not both. ' ,
155- $ field ,
156- $ exclusion ,
157- ));
158- }
159- }
160-
161- return $ value ;
162- };
163- }
164-
165- private function mutuallyDependentFields (string $ field , string ...$ dependencies ): \Closure
166- {
167- return function (array $ value ) use ($ field , $ dependencies ) {
168- if (!array_key_exists ($ field , $ value )) {
169- return $ value ;
170- }
171-
172- foreach ($ dependencies as $ dependency ) {
173- if (!array_key_exists ($ dependency , $ value )) {
174- throw new \InvalidArgumentException (sprintf (
175- 'Your configuration should contain the "%s" field if the "%s" field is present. ' ,
176- $ dependency ,
177- $ field ,
178- ));
179- }
180- }
181-
182- return $ value ;
183- };
184- }
185-
186146 private function cleanupFields (string ...$ fieldNames ): \Closure
187147 {
188148 return function (array $ value ) use ($ fieldNames ) {
@@ -210,40 +170,40 @@ private function getChildTreeBuilder(string $name): TreeBuilder
210170 ->always ($ this ->cleanupFields ('map ' , 'list ' , 'object ' , 'collection ' ))
211171 ->end ()
212172 ->validate ()
213- ->always ($ this -> mutuallyExclusiveFields ('map ' , 'list ' , 'object ' , 'collection ' ))
173+ ->always (mutuallyExclusiveFields ('map ' , 'list ' , 'object ' , 'collection ' ))
214174 ->end ()
215175 ->validate ()
216- ->always ($ this -> mutuallyExclusiveFields ('copy ' , 'expression ' , 'constant ' , 'class ' , 'map ' , 'object ' , 'list ' , 'collection ' ))
176+ ->always (mutuallyExclusiveFields ('copy ' , 'expression ' , 'constant ' , 'class ' , 'map ' , 'object ' , 'list ' , 'collection ' ))
217177 ->end ()
218178 ->validate ()
219- ->always ($ this -> mutuallyExclusiveFields ('expression ' , 'copy ' , 'constant ' ))
179+ ->always (mutuallyExclusiveFields ('expression ' , 'copy ' , 'constant ' ))
220180 ->end ()
221181 ->validate ()
222- ->always ($ this -> mutuallyExclusiveFields ('constant ' , 'copy ' , 'expression ' , 'class ' , 'map ' , 'object ' , 'list ' , 'collection ' ))
182+ ->always (mutuallyExclusiveFields ('constant ' , 'copy ' , 'expression ' , 'class ' , 'map ' , 'object ' , 'list ' , 'collection ' ))
223183 ->end ()
224184 ->validate ()
225- ->always ($ this -> mutuallyExclusiveFields ('map ' , 'copy ' , 'constant ' , 'class ' , 'object ' , 'list ' , 'collection ' ))
185+ ->always (mutuallyExclusiveFields ('map ' , 'copy ' , 'constant ' , 'class ' , 'object ' , 'list ' , 'collection ' ))
226186 ->end ()
227187 ->validate ()
228- ->always ($ this -> mutuallyExclusiveFields ('object ' , 'copy ' , 'constant ' , 'map ' , 'list ' , 'collection ' ))
188+ ->always (mutuallyExclusiveFields ('object ' , 'copy ' , 'constant ' , 'map ' , 'list ' , 'collection ' ))
229189 ->end ()
230190 ->validate ()
231- ->always ($ this -> mutuallyExclusiveFields ('list ' , 'copy ' , 'constant ' , 'class ' , 'map ' , 'object ' , 'collection ' ))
191+ ->always (mutuallyExclusiveFields ('list ' , 'copy ' , 'constant ' , 'class ' , 'map ' , 'object ' , 'collection ' ))
232192 ->end ()
233193 ->validate ()
234- ->always ($ this -> mutuallyExclusiveFields ('collection ' , 'copy ' , 'constant ' , 'map ' , 'object ' , 'list ' ))
194+ ->always (mutuallyExclusiveFields ('collection ' , 'copy ' , 'constant ' , 'map ' , 'object ' , 'list ' ))
235195 ->end ()
236196 ->validate ()
237- ->always ($ this -> mutuallyDependentFields ('object ' , 'class ' , 'expression ' ))
197+ ->always (mutuallyDependentFields ('object ' , 'class ' , 'expression ' ))
238198 ->end ()
239199 ->validate ()
240- ->always ($ this -> mutuallyDependentFields ('collection ' , 'class ' , 'expression ' ))
200+ ->always (mutuallyDependentFields ('collection ' , 'class ' , 'expression ' ))
241201 ->end ()
242202 ->validate ()
243- ->always ($ this -> mutuallyDependentFields ('map ' , 'expression ' ))
203+ ->always (mutuallyDependentFields ('map ' , 'expression ' ))
244204 ->end ()
245205 ->validate ()
246- ->always ($ this -> mutuallyDependentFields ('list ' , 'expression ' ))
206+ ->always (mutuallyDependentFields ('list ' , 'expression ' ))
247207 ->end ()
248208 ->validate ()
249209 ->ifTrue (function (array $ value ) {
@@ -337,7 +297,7 @@ public function getConditionalTreeBuilder(): TreeBuilder
337297 ->always ($ this ->cleanupFields ('map ' , 'list ' , 'object ' , 'collection ' ))
338298 ->end ()
339299 ->validate ()
340- ->always ($ this -> mutuallyExclusiveFields ('map ' , 'list ' , 'object ' , 'collection ' ))
300+ ->always (mutuallyExclusiveFields ('map ' , 'list ' , 'object ' , 'collection ' ))
341301 ->end ()
342302 ->children ()
343303 ->scalarNode ('condition ' )->end ()
0 commit comments