@@ -133,27 +133,49 @@ private function showTable(
133133 string $ method ,
134134 string $ route
135135 ): void {
136- $ tbody = [];
137-
138- $ filters = $ this ->addRequiredFilters ($ filterCollector , $ filters );
139-
140- $ tbody [] = [
141- strtoupper ($ method ),
142- $ route ,
143- implode (' ' , $ filters ['before ' ]),
144- implode (' ' , $ filters ['after ' ]),
145- ];
146-
147136 $ thead = [
148137 'Method ' ,
149138 'Route ' ,
150139 'Before Filters ' ,
151140 'After Filters ' ,
152141 ];
153142
143+ $ required = $ filterCollector ->getRequiredFilters ();
144+
145+ $ coloredRequired = $ this ->colorItems ($ required );
146+
147+ $ before = array_merge ($ coloredRequired ['before ' ], $ filters ['before ' ]);
148+ $ after = array_merge ($ filters ['after ' ], $ coloredRequired ['after ' ]);
149+
150+ $ tbody = [];
151+ $ tbody [] = [
152+ strtoupper ($ method ),
153+ $ route ,
154+ implode (' ' , $ before ),
155+ implode (' ' , $ after ),
156+ ];
157+
154158 CLI ::table ($ tbody , $ thead );
155159 }
156160
161+ /**
162+ * Color all elements of the array.
163+ *
164+ * @param list<mixed> $array
165+ *
166+ * @return list<mixed>
167+ */
168+ private function colorItems (array $ array ): array
169+ {
170+ return array_map (function ($ item ) {
171+ if (is_array ($ item )) {
172+ return $ this ->colorItems ($ item );
173+ }
174+
175+ return CLI ::color ($ item , 'yellow ' );
176+ }, $ array );
177+ }
178+
157179 private function showFilterClasses (
158180 FilterCollector $ filterCollector ,
159181 string $ method ,
@@ -162,13 +184,7 @@ private function showFilterClasses(
162184 $ requiredFilterClasses = $ filterCollector ->getRequiredFilterClasses ();
163185 $ filterClasses = $ filterCollector ->getClasses ($ method , $ route );
164186
165- foreach ($ requiredFilterClasses as $ position => $ classes ) {
166- foreach ($ classes as $ class ) {
167- $ class = CLI ::color ($ class , 'yellow ' );
168-
169- $ coloredRequiredFilterClasses [$ position ][] = $ class ;
170- }
171- }
187+ $ coloredRequiredFilterClasses = $ this ->colorItems ($ requiredFilterClasses );
172188
173189 $ classList = [
174190 'before ' => array_merge ($ coloredRequiredFilterClasses ['before ' ], $ filterClasses ['before ' ]),
@@ -180,29 +196,4 @@ private function showFilterClasses(
180196 CLI ::write (implode (' → ' , $ classes ));
181197 }
182198 }
183-
184- private function addRequiredFilters (FilterCollector $ filterCollector , array $ filters ): array
185- {
186- $ output = [];
187-
188- $ required = $ filterCollector ->getRequiredFilters ();
189-
190- $ colored = [];
191-
192- foreach ($ required ['before ' ] as $ filter ) {
193- $ filter = CLI ::color ($ filter , 'yellow ' );
194- $ colored [] = $ filter ;
195- }
196- $ output ['before ' ] = array_merge ($ colored , $ filters ['before ' ]);
197-
198- $ colored = [];
199-
200- foreach ($ required ['after ' ] as $ filter ) {
201- $ filter = CLI ::color ($ filter , 'yellow ' );
202- $ colored [] = $ filter ;
203- }
204- $ output ['after ' ] = array_merge ($ filters ['after ' ], $ colored );
205-
206- return $ output ;
207- }
208199}
0 commit comments