Update website

This commit is contained in:
Guilhem Lavaux 2024-11-19 08:02:04 +01:00
parent 4413528994
commit 1d90fbf296
6865 changed files with 1091082 additions and 0 deletions

View file

@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Nodes\AnchorNode;
use Doctrine\RST\Renderers\NodeRenderer;
use Doctrine\RST\Templates\TemplateRenderer;
final class AnchorNodeRenderer implements NodeRenderer
{
/** @var AnchorNode */
private $anchorNode;
/** @var TemplateRenderer */
private $templateRenderer;
public function __construct(AnchorNode $anchorNode, TemplateRenderer $templateRenderer)
{
$this->anchorNode = $anchorNode;
$this->templateRenderer = $templateRenderer;
}
public function render(): string
{
return $this->templateRenderer->render('anchor.tex.twig', [
'anchorNode' => $this->anchorNode,
]);
}
}

View file

@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Nodes\CodeNode;
use Doctrine\RST\Renderers\NodeRenderer;
use Doctrine\RST\Templates\TemplateRenderer;
final class CodeNodeRenderer implements NodeRenderer
{
/** @var CodeNode */
private $codeNode;
/** @var TemplateRenderer */
private $templateRenderer;
public function __construct(CodeNode $codeNode, TemplateRenderer $templateRenderer)
{
$this->codeNode = $codeNode;
$this->templateRenderer = $templateRenderer;
}
public function render(): string
{
return $this->templateRenderer->render('code.tex.twig', [
'codeNode' => $this->codeNode,
]);
}
}

View file

@ -0,0 +1,50 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Nodes\DocumentNode;
use Doctrine\RST\Nodes\MainNode;
use Doctrine\RST\Renderers\DocumentNodeRenderer as BaseDocumentRender;
use Doctrine\RST\Renderers\FullDocumentNodeRenderer;
use Doctrine\RST\Renderers\NodeRenderer;
use Doctrine\RST\Templates\TemplateRenderer;
use function count;
final class DocumentNodeRenderer implements NodeRenderer, FullDocumentNodeRenderer
{
/** @var DocumentNode */
private $document;
/** @var TemplateRenderer */
private $templateRenderer;
public function __construct(DocumentNode $document, TemplateRenderer $templateRenderer)
{
$this->document = $document;
$this->templateRenderer = $templateRenderer;
}
public function render(): string
{
return (new BaseDocumentRender($this->document))->render();
}
public function renderDocument(): string
{
return $this->templateRenderer->render('document.tex.twig', [
'isMain' => $this->isMain(),
'document' => $this->document,
'body' => $this->render(),
]);
}
private function isMain(): bool
{
return count($this->document->getNodes(static function ($node): bool {
return $node instanceof MainNode;
})) !== 0;
}
}

View file

@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Nodes\ImageNode;
use Doctrine\RST\Renderers\NodeRenderer;
use Doctrine\RST\Templates\TemplateRenderer;
final class ImageNodeRenderer implements NodeRenderer
{
/** @var ImageNode */
private $imageNode;
/** @var TemplateRenderer */
private $templateRenderer;
public function __construct(ImageNode $imageNode, TemplateRenderer $templateRenderer)
{
$this->imageNode = $imageNode;
$this->templateRenderer = $templateRenderer;
}
public function render(): string
{
return $this->templateRenderer->render('image.tex.twig', [
'imageNode' => $this->imageNode,
]);
}
}

View file

@ -0,0 +1,15 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Renderers\NodeRenderer;
final class LaTexMainNodeRenderer implements NodeRenderer
{
public function render(): string
{
return '';
}
}

View file

@ -0,0 +1,36 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Nodes\ListNode;
use Doctrine\RST\Renderers\NodeRenderer;
use Doctrine\RST\Templates\TemplateRenderer;
final class ListNodeRenderer implements NodeRenderer
{
/** @var ListNode */
private $listNode;
/** @var TemplateRenderer */
private $templateRenderer;
public function __construct(ListNode $listNode, TemplateRenderer $templateRenderer)
{
$this->listNode = $listNode;
$this->templateRenderer = $templateRenderer;
}
public function render(): string
{
$template = 'bullet-list.tex.twig';
if ($this->listNode->isOrdered()) {
$template = 'enumerated-list.tex.twig';
}
return $this->templateRenderer->render($template, [
'listNode' => $this->listNode,
]);
}
}

View file

@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Nodes\MetaNode;
use Doctrine\RST\Renderers\NodeRenderer;
use Doctrine\RST\Templates\TemplateRenderer;
final class MetaNodeRenderer implements NodeRenderer
{
/** @var MetaNode */
private $metaNode;
/** @var TemplateRenderer */
private $templateRenderer;
public function __construct(MetaNode $metaNode, TemplateRenderer $templateRenderer)
{
$this->metaNode = $metaNode;
$this->templateRenderer = $templateRenderer;
}
public function render(): string
{
return $this->templateRenderer->render('meta.tex.twig', [
'metaNode' => $this->metaNode,
]);
}
}

View file

@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Nodes\ParagraphNode;
use Doctrine\RST\Renderers\NodeRenderer;
use Doctrine\RST\Templates\TemplateRenderer;
final class ParagraphNodeRenderer implements NodeRenderer
{
/** @var ParagraphNode */
private $paragraphNode;
/** @var TemplateRenderer */
private $templateRenderer;
public function __construct(ParagraphNode $paragraphNode, TemplateRenderer $templateRenderer)
{
$this->paragraphNode = $paragraphNode;
$this->templateRenderer = $templateRenderer;
}
public function render(): string
{
return $this->templateRenderer->render('paragraph.tex.twig', [
'paragraphNode' => $this->paragraphNode,
]);
}
}

View file

@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Nodes\QuoteNode;
use Doctrine\RST\Renderers\NodeRenderer;
use Doctrine\RST\Templates\TemplateRenderer;
final class QuoteNodeRenderer implements NodeRenderer
{
/** @var QuoteNode */
private $quoteNode;
/** @var TemplateRenderer */
private $templateRenderer;
public function __construct(QuoteNode $quoteNode, TemplateRenderer $templateRenderer)
{
$this->quoteNode = $quoteNode;
$this->templateRenderer = $templateRenderer;
}
public function render(): string
{
return $this->templateRenderer->render('quote.tex.twig', [
'quoteNode' => $this->quoteNode,
]);
}
}

View file

@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Renderers\NodeRenderer;
use Doctrine\RST\Templates\TemplateRenderer;
final class SeparatorNodeRenderer implements NodeRenderer
{
/** @var TemplateRenderer */
private $templateRenderer;
public function __construct(TemplateRenderer $templateRenderer)
{
$this->templateRenderer = $templateRenderer;
}
public function render(): string
{
return $this->templateRenderer->render('separator.tex.twig');
}
}

View file

@ -0,0 +1,103 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Environment;
use Doctrine\RST\Nodes\SpanNode;
use Doctrine\RST\References\ResolvedReference;
use Doctrine\RST\Renderers\SpanNodeRenderer as BaseSpanNodeRenderer;
use Doctrine\RST\Templates\TemplateRenderer;
use function is_string;
use function substr;
use function trim;
final class SpanNodeRenderer extends BaseSpanNodeRenderer
{
/** @var TemplateRenderer */
private $templateRenderer;
public function __construct(
Environment $environment,
SpanNode $span,
TemplateRenderer $templateRenderer
) {
parent::__construct($environment, $span);
$this->templateRenderer = $templateRenderer;
}
public function emphasis(string $text): string
{
return $this->templateRenderer->render('emphasis.tex.twig', ['text' => $text]);
}
public function strongEmphasis(string $text): string
{
return $this->templateRenderer->render('strong-emphasis.tex.twig', ['text' => $text]);
}
public function nbsp(): string
{
return $this->templateRenderer->render('nbsp.tex.twig');
}
public function br(): string
{
return $this->templateRenderer->render('br.tex.twig');
}
public function literal(string $text): string
{
return $this->templateRenderer->render('literal.tex.twig', ['text' => $text]);
}
/** @param mixed[] $attributes */
public function link(?string $url, string $title, array $attributes = []): string
{
$type = 'href';
if (is_string($url) && $url !== '' && $url[0] === '#') {
$type = 'ref';
$url = substr($url, 1);
$url = $url !== '' ? '#' . $url : '';
$url = $this->environment->getUrl() . $url;
}
return $this->templateRenderer->render('link.tex.twig', [
'type' => $type,
'url' => $url,
'title' => $title,
'attributes' => $attributes,
]);
}
public function escape(string $span): string
{
return $span;
}
/** @param mixed[] $value */
public function reference(ResolvedReference $reference, array $value): string
{
$text = (bool) $value['text'] ? $value['text'] : $reference->getTitle();
$url = $reference->getUrl();
if ($value['anchor'] !== '') {
$url .= $value['anchor'];
}
if ($text === null) {
$text = '';
}
if ($url === null) {
$url = '';
}
return $this->link($url, trim($text));
}
}

View file

@ -0,0 +1,57 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Nodes\TableNode;
use Doctrine\RST\Renderers\NodeRenderer;
use function count;
use function implode;
use function max;
final class TableNodeRenderer implements NodeRenderer
{
/** @var TableNode */
private $tableNode;
public function __construct(TableNode $tableNode)
{
$this->tableNode = $tableNode;
}
public function render(): string
{
$cols = 0;
$rows = [];
foreach ($this->tableNode->getData() as $row) {
$rowTex = '';
$cols = max($cols, count($row->getColumns()));
foreach ($row->getColumns() as $n => $col) {
$rowTex .= $col->render();
if ((int) $n + 1 >= count($row->getColumns())) {
continue;
}
$rowTex .= ' & ';
}
$rowTex .= ' \\\\' . "\n";
$rows[] = $rowTex;
}
$aligns = [];
for ($i = 0; $i < $cols; $i++) {
$aligns[] = 'l';
}
$aligns = '|' . implode('|', $aligns) . '|';
$rows = "\\hline\n" . implode("\\hline\n", $rows) . "\\hline\n";
return "\\begin{tabular}{" . $aligns . "}\n" . $rows . "\n\\end{tabular}\n";
}
}

View file

@ -0,0 +1,42 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Nodes\TitleNode;
use Doctrine\RST\Renderers\NodeRenderer;
use Doctrine\RST\Templates\TemplateRenderer;
final class TitleNodeRenderer implements NodeRenderer
{
/** @var TitleNode */
private $titleNode;
/** @var TemplateRenderer */
private $templateRenderer;
public function __construct(TitleNode $titleNode, TemplateRenderer $templateRenderer)
{
$this->titleNode = $titleNode;
$this->templateRenderer = $templateRenderer;
}
public function render(): string
{
$type = 'chapter';
if ($this->titleNode->getLevel() > 1) {
$type = 'section';
for ($i = 2; $i < $this->titleNode->getLevel(); $i++) {
$type = 'sub' . $type;
}
}
return $this->templateRenderer->render('title.tex.twig', [
'type' => $type,
'titleNode' => $this->titleNode,
]);
}
}

View file

@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
namespace Doctrine\RST\LaTeX\Renderers;
use Doctrine\RST\Environment;
use Doctrine\RST\Nodes\TocNode;
use Doctrine\RST\Renderers\NodeRenderer;
use Doctrine\RST\Templates\TemplateRenderer;
final class TocNodeRenderer implements NodeRenderer
{
/** @var Environment */
private $environment;
/** @var TocNode */
private $tocNode;
/** @var TemplateRenderer */
private $templateRenderer;
public function __construct(Environment $environment, TocNode $tocNode, TemplateRenderer $templateRenderer)
{
$this->environment = $environment;
$this->tocNode = $tocNode;
$this->templateRenderer = $templateRenderer;
}
public function render(): string
{
$tocItems = [];
foreach ($this->tocNode->getFiles() as $file) {
$reference = $this->environment->resolve('doc', $file);
if ($reference === null) {
continue;
}
$url = $this->environment->relativeUrl($reference->getUrl());
$tocItems[] = ['url' => $url];
}
return $this->templateRenderer->render('toc.tex.twig', [
'tocNode' => $this->tocNode,
'tocItems' => $tocItems,
]);
}
}