Skip to content

Commit 4cdeec3

Browse files
committed
Remove Kernel in favor of DirectiveFactory and change references into text roles
1 parent 17a99fe commit 4cdeec3

Some content is hidden

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

47 files changed

+539
-793
lines changed

src/BuilderFactory.php

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/*
6+
* This file is part of the Docs Builder package.
7+
* (c) Ryan Weaver <ryan@symfonycasts.com>
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace SymfonyDocsBuilder;
13+
14+
use Doctrine\Common\EventManager;
15+
use Doctrine\RST\Builder;
16+
use Doctrine\RST\Configuration as RSTParserConfiguration;
17+
use Doctrine\RST\Event\PostBuildRenderEvent;
18+
use Doctrine\RST\Event\PreNodeRenderEvent;
19+
use Doctrine\RST\Event\PreParseDocumentEvent;
20+
use SymfonyDocsBuilder\Listener\AssetsCopyListener;
21+
use Doctrine\RST\ErrorManager;
22+
use SymfonyDocsBuilder\Listener\CopyImagesListener;
23+
use SymfonyDocsBuilder\Listener\AdmonitionListener;
24+
use SymfonyDocsBuilder\CI\UrlChecker;
25+
use SymfonyDocsBuilder\Twig\AssetsExtension;
26+
use SymfonyDocsBuilder\Twig\TocExtension;
27+
use function Symfony\Component\String\u;
28+
29+
final class BuilderFactory
30+
{
31+
public static function createBuilder(BuildConfig $buildConfig, ?UrlChecker $urlChecker = null): Builder
32+
{
33+
$configuration = new RSTParserConfiguration();
34+
// needed to avoid outputting parser errors on the console output or the webpage contents
35+
$configuration->silentOnError(true);
36+
$configuration->setCustomTemplateDirs([__DIR__.'/Templates']);
37+
$configuration->setTheme($buildConfig->getTheme());
38+
$configuration->setCacheDir(sprintf('%s/var/cache', $buildConfig->getCacheDir()));
39+
$configuration->abortOnError(false);
40+
41+
if (!$buildConfig->isBuildCacheEnabled()) {
42+
$configuration->setUseCachedMetas(false);
43+
}
44+
45+
$configuration->addFormat(
46+
new SymfonyHTMLFormat(
47+
$buildConfig,
48+
$configuration->getTemplateRenderer(),
49+
$configuration->getFormat(),
50+
$urlChecker
51+
)
52+
);
53+
54+
if ($parseSubPath = $buildConfig->getSubdirectoryToBuild()) {
55+
$configuration->setBaseUrl($buildConfig->getSymfonyDocUrl());
56+
$configuration->setBaseUrlEnabledCallable(
57+
static function (string $path) use ($parseSubPath): bool {
58+
return u($path)->containsAny($parseSubPath);
59+
}
60+
);
61+
}
62+
63+
$eventManager = $configuration->getEventManager();
64+
$eventManager->addEventListener(
65+
PreParseDocumentEvent::PRE_PARSE_DOCUMENT,
66+
new AdmonitionListener()
67+
);
68+
69+
$eventManager->addEventListener(
70+
PreNodeRenderEvent::PRE_NODE_RENDER,
71+
new CopyImagesListener($buildConfig, $configuration->getErrorManager())
72+
);
73+
74+
if (!$buildConfig->getSubdirectoryToBuild()) {
75+
$eventManager->addEventListener(
76+
[PostBuildRenderEvent::POST_BUILD_RENDER],
77+
new AssetsCopyListener($buildConfig->getOutputDir())
78+
);
79+
}
80+
81+
$twig = $configuration->getTemplateEngine();
82+
$twig->addExtension(new AssetsExtension());
83+
$twig->addExtension(new TocExtension());
84+
85+
$builder = new Builder($configuration);
86+
$builder->setScannerFinder($buildConfig->createFileFinder());
87+
88+
return $builder;
89+
}
90+
}

src/Command/BuildDocsCommand.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Doctrine\RST\Builder;
1616
use Doctrine\RST\Configuration;
1717
use Doctrine\RST\Meta\Metas;
18+
use SymfonyDocsBuilder\BuilderFactory;
1819
use Symfony\Component\Console\Command\Command;
1920
use Symfony\Component\Console\Input\InputArgument;
2021
use Symfony\Component\Console\Input\InputInterface;
@@ -27,7 +28,6 @@
2728
use SymfonyDocsBuilder\ConfigFileParser;
2829
use SymfonyDocsBuilder\Generator\HtmlForPdfGenerator;
2930
use SymfonyDocsBuilder\Generator\JsonGenerator;
30-
use SymfonyDocsBuilder\KernelFactory;
3131
use SymfonyDocsBuilder\Listener\BuildProgressListener;
3232

3333
class BuildDocsCommand extends Command
@@ -140,7 +140,7 @@ protected function initialize(InputInterface $input, OutputInterface $output)
140140

141141
protected function execute(InputInterface $input, OutputInterface $output): int
142142
{
143-
$builder = KernelFactory::createKernel($this->buildConfig, $this->urlChecker ?? null)->createBuilder();
143+
$builder = BuilderFactory::createBuilder($this->buildConfig, $this->urlChecker ?? null);
144144

145145
$configuration = $builder->getConfiguration();
146146
$configuration->setOutputFormat($input->getOption('error-output-format'));

src/DocBuilder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public function build(BuildConfig $config): BuildResult
2323
$configFileParser = new ConfigFileParser($config, new NullOutput());
2424
$configFileParser->processConfigFile($config->getContentDir());
2525

26-
$builder = KernelFactory::createKernel($config)->createBuilder();
26+
$builder = BuilderFactory::createBuilder($config);
2727
$builder->build($config->getContentDir(), $config->getOutputDir());
2828

2929
$buildResult = new BuildResult($builder);
@@ -54,7 +54,7 @@ public function build(BuildConfig $config): BuildResult
5454
} elseif ($config->generateJsonFiles()) {
5555
$metas = $buildResult->getMetadata();
5656
$jsonGenerator = new JsonGenerator($metas, $config);
57-
$buildResult->setJsonResults($jsonGenerator->generateJson($builder->getIndexName()));
57+
$buildResult->setJsonResults($jsonGenerator->generateJson($builder->getConfiguration()->getIndexFileName()));
5858
}
5959

6060
return $buildResult;

src/DocsKernel.php

Lines changed: 0 additions & 76 deletions
This file was deleted.

src/KernelFactory.php

Lines changed: 0 additions & 113 deletions
This file was deleted.

src/Reference/ClassReference.php

Lines changed: 0 additions & 45 deletions
This file was deleted.

0 commit comments

Comments
 (0)