Skip to content

Commit b8567a6

Browse files
committed
Improve UI + refactor of results/renderers + multiple request support for CLI exercises
1 parent dd9cee5 commit b8567a6

File tree

68 files changed

+2794
-1184
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+2794
-1184
lines changed

app/config.php

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,23 @@
3737
use PhpSchool\PhpWorkshop\Output\OutputInterface;
3838
use PhpSchool\PhpWorkshop\Output\StdOutput;
3939
use PhpSchool\PhpWorkshop\Patch;
40+
use PhpSchool\PhpWorkshop\Result\Cgi\GenericFailure as CgiGenericFailure;
41+
use PhpSchool\PhpWorkshop\Result\Cgi\RequestFailure as CgiRequestFailure;
42+
use PhpSchool\PhpWorkshop\Result\Cgi\CgiResult;
43+
use PhpSchool\PhpWorkshop\Result\Cli\CliResult;
44+
use PhpSchool\PhpWorkshop\Result\Cli\GenericFailure as CliGenericFailure;
45+
use PhpSchool\PhpWorkshop\Result\Cli\RequestFailure as CliRequestFailure;
46+
use PhpSchool\PhpWorkshop\Result\Failure;
47+
use PhpSchool\PhpWorkshop\Result\FunctionRequirementsFailure;
48+
use PhpSchool\PhpWorkshop\Result\StdOutFailure;
4049
use PhpSchool\PhpWorkshop\ResultAggregator;
50+
use PhpSchool\PhpWorkshop\ResultRenderer\CgiResultRenderer;
51+
use PhpSchool\PhpWorkshop\ResultRenderer\CliResultRenderer;
52+
use PhpSchool\PhpWorkshop\ResultRenderer\FailureRenderer;
53+
use PhpSchool\PhpWorkshop\ResultRenderer\FunctionRequirementsFailureRenderer;
54+
use PhpSchool\PhpWorkshop\ResultRenderer\Cli\RequestFailureRenderer as CliRequestFailureRenderer;
55+
use PhpSchool\PhpWorkshop\ResultRenderer\Cgi\RequestFailureRenderer as CgiRequestFailureRenderer;
56+
use PhpSchool\PhpWorkshop\Utils\RequestRenderer;
4157
use PhpSchool\PSX\Factory as PsxFactory;
4258
use PhpSchool\PhpWorkshop\WorkshopType;
4359
use PhpSchool\PSX\SyntaxHighlighter;
@@ -125,7 +141,7 @@
125141
RunnerManager::class => function (ContainerInterface $c) {
126142
$manager = new RunnerManager;
127143
$manager->addFactory(new CliRunnerFactory($c->get(EventDispatcher::class)));
128-
$manager->addFactory(new CgiRunnerFactory($c->get(EventDispatcher::class)));
144+
$manager->addFactory(new CgiRunnerFactory($c->get(EventDispatcher::class), $c->get(RequestRenderer::class)));
129145
$manager->addFactory(new CustomVerifyingRunnerFactory);
130146
return $manager;
131147
},
@@ -231,6 +247,7 @@
231247
FakerGenerator::class => function () {
232248
return FakerFactory::create();
233249
},
250+
RequestRenderer::class => object(),
234251

235252
TerminalInterface::class => factory([TerminalFactory::class, 'fromSystem']),
236253
'menu' => factory(MenuFactory::class),
@@ -266,7 +283,26 @@
266283
ResetProgress::class => function (ContainerInterface $c) {
267284
return new ResetProgress($c->get(UserStateSerializer::class));
268285
},
269-
ResultRendererFactory::class => object(),
286+
ResultRendererFactory::class => function (ContainerInterface $c) {
287+
$factory = new ResultRendererFactory;
288+
$factory->registerRenderer(FunctionRequirementsFailure::class, FunctionRequirementsFailureRenderer::class);
289+
$factory->registerRenderer(Failure::class, FailureRenderer::class);
290+
$factory->registerRenderer(
291+
CgiResult::class,
292+
CgiResultRenderer::class,
293+
function (CgiResult $result) use ($c) {
294+
return new CgiResultRenderer($result, $c->get(RequestRenderer::class));
295+
}
296+
);
297+
$factory->registerRenderer(CgiGenericFailure::class, FailureRenderer::class);
298+
$factory->registerRenderer(CgiRequestFailure::class, CgiRequestFailureRenderer::class);
299+
300+
$factory->registerRenderer(CliResult::class, CliResultRenderer::class);
301+
$factory->registerRenderer(CliGenericFailure::class, FailureRenderer::class);
302+
$factory->registerRenderer(CliRequestFailure::class, CliRequestFailureRenderer::class);
303+
304+
return $factory;
305+
},
270306
ResultsRenderer::class => function (ContainerInterface $c) {
271307
return new ResultsRenderer(
272308
$c->get('appName'),
@@ -277,6 +313,7 @@
277313
$c->get(ResultRendererFactory::class)
278314
);
279315
},
316+
280317
'coreContributors' => [
281318
'@AydinHassan' => 'Aydin Hassan',
282319
'@mikeymike' => 'Michael Woodward',

0 commit comments

Comments
 (0)