@@ -133,27 +133,49 @@ private function showTable(
133
133
string $ method ,
134
134
string $ route
135
135
): 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
-
147
136
$ thead = [
148
137
'Method ' ,
149
138
'Route ' ,
150
139
'Before Filters ' ,
151
140
'After Filters ' ,
152
141
];
153
142
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
+
154
158
CLI ::table ($ tbody , $ thead );
155
159
}
156
160
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
+
157
179
private function showFilterClasses (
158
180
FilterCollector $ filterCollector ,
159
181
string $ method ,
@@ -162,13 +184,7 @@ private function showFilterClasses(
162
184
$ requiredFilterClasses = $ filterCollector ->getRequiredFilterClasses ();
163
185
$ filterClasses = $ filterCollector ->getClasses ($ method , $ route );
164
186
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 );
172
188
173
189
$ classList = [
174
190
'before ' => array_merge ($ coloredRequiredFilterClasses ['before ' ], $ filterClasses ['before ' ]),
@@ -180,29 +196,4 @@ private function showFilterClasses(
180
196
CLI ::write (implode (' → ' , $ classes ));
181
197
}
182
198
}
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
- }
208
199
}
0 commit comments