Skip to content

Commit 1e24a90

Browse files
committed
apply .. class: to paragraphs
1 parent 09bd229 commit 1e24a90

File tree

6 files changed

+110
-132
lines changed

6 files changed

+110
-132
lines changed

_build/composer.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

_build/parse.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
$builder = new Builder($kernel);
1010

1111
$builder->build(
12-
__DIR__.'/../',
12+
__DIR__.'/..',
1313
__DIR__.'/html',
14-
true // verbose
14+
false
1515
);

_build/src/HtmlKernel.php

Lines changed: 47 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,20 @@
22

33
namespace SymfonyDocs;
44

5+
use Doctrine\RST\HTML\Document;
6+
use Doctrine\RST\DefaultNodeFactory;
57
use Doctrine\RST\Directive;
6-
use Doctrine\RST\Factory;
8+
use Doctrine\RST\NodeFactory as NodeFactoryInterface;
79
use Doctrine\RST\HTML\Kernel;
8-
use SymfonyDocs\Directive\BestPracticeDirective;
9-
use SymfonyDocs\Directive\CautionDirective;
10-
use SymfonyDocs\Directive\ClassDirective;
11-
use SymfonyDocs\Directive\CodeBlockDirective;
12-
use SymfonyDocs\Directive\ConfigurationBlockDirective;
13-
use SymfonyDocs\Directive\IndexDirective;
14-
use SymfonyDocs\Directive\NoteDirective;
15-
use SymfonyDocs\Directive\RoleDirective;
16-
use SymfonyDocs\Directive\SeeAlsoDirective;
17-
use SymfonyDocs\Directive\SidebarDirective;
18-
use SymfonyDocs\Directive\TipDirective;
19-
use SymfonyDocs\Directive\VersionAddedDirective;
20-
use SymfonyDocs\Reference\ClassReference;
21-
use SymfonyDocs\Reference\DocReference;
22-
use SymfonyDocs\Reference\MethodReference;
23-
use SymfonyDocs\Reference\NamespaceReference;
24-
use SymfonyDocs\Reference\PhpClassReference;
25-
use SymfonyDocs\Reference\PhpFunctionReference;
26-
use SymfonyDocs\Reference\PhpMethodReference;
27-
use SymfonyDocs\Reference\RefReference;
10+
use Doctrine\RST\NodeInstantiator;
11+
use Doctrine\RST\NodeTypes;
12+
use Doctrine\RST\HTML\Nodes as ParserNodes;
13+
use SymfonyDocs\Directive as SymfonyDoirectives;
14+
use SymfonyDocs\Nodes as SymfonyNodes;
15+
use SymfonyDocs\Reference as SymfonyRefernces;
2816

2917
class HtmlKernel extends Kernel
3018
{
31-
/** @var NodeFactory */
32-
private $symfonyDocsFactory;
33-
3419
/** @var array */
3520
private static $configuration;
3621

@@ -52,60 +37,57 @@ public static function getVersion(): string
5237
return self::getConfiguration()['version'];
5338
}
5439

55-
public function getName(): string
56-
{
57-
return parent::getName();
58-
}
59-
60-
/**
61-
* @param Directive[] $directives
62-
*/
63-
public function __construct(array $directives = [])
64-
{
65-
parent::__construct($directives);
66-
67-
$this->symfonyDocsFactory = new NodeFactory($this->getName());
68-
}
69-
70-
public function getFactory(): Factory
71-
{
72-
return $this->symfonyDocsFactory;
73-
}
74-
7540
public function getDirectives(): array
7641
{
7742
$directives = parent::getDirectives();
7843

7944
return array_merge(
8045
$directives,
8146
[
82-
new CautionDirective(),
83-
new ClassDirective(),
84-
new CodeBlockDirective(),
85-
new ConfigurationBlockDirective(),
86-
new IndexDirective(),
87-
new NoteDirective(),
88-
new RoleDirective(),
89-
new SeeAlsoDirective(),
90-
new SidebarDirective(),
91-
new TipDirective(),
92-
new VersionAddedDirective(),
93-
new BestPracticeDirective(),
47+
new SymfonyDoirectives\CautionDirective(),
48+
new SymfonyDoirectives\ClassDirective(),
49+
new SymfonyDoirectives\CodeBlockDirective(),
50+
new SymfonyDoirectives\ConfigurationBlockDirective(),
51+
new SymfonyDoirectives\IndexDirective(),
52+
new SymfonyDoirectives\NoteDirective(),
53+
new SymfonyDoirectives\RoleDirective(),
54+
new SymfonyDoirectives\SeeAlsoDirective(),
55+
new SymfonyDoirectives\SidebarDirective(),
56+
new SymfonyDoirectives\TipDirective(),
57+
new SymfonyDoirectives\VersionAddedDirective(),
58+
new SymfonyDoirectives\BestPracticeDirective(),
9459
]
9560
);
9661
}
9762

9863
public function getReferences(): array
9964
{
10065
return [
101-
new DocReference(),
102-
new RefReference(),
103-
new ClassReference(),
104-
new MethodReference(),
105-
new NamespaceReference(),
106-
new PhpFunctionReference(),
107-
new PhpMethodReference(),
108-
new PhpClassReference(),
66+
new SymfonyRefernces\DocReference(),
67+
new SymfonyRefernces\RefReference(),
68+
new SymfonyRefernces\ClassReference(),
69+
new SymfonyRefernces\MethodReference(),
70+
new SymfonyRefernces\NamespaceReference(),
71+
new SymfonyRefernces\PhpFunctionReference(),
72+
new SymfonyRefernces\PhpMethodReference(),
73+
new SymfonyRefernces\PhpClassReference(),
10974
];
11075
}
111-
}
76+
77+
protected function createNodeFactory() : NodeFactoryInterface
78+
{
79+
return new DefaultNodeFactory(
80+
new NodeInstantiator(NodeTypes::ANCHOR, SymfonyNodes\AnchorNode::class),
81+
new NodeInstantiator(NodeTypes::CODE, SymfonyNodes\CodeNode::class),
82+
new NodeInstantiator(NodeTypes::LIST, SymfonyNodes\ListNode::class),
83+
new NodeInstantiator(NodeTypes::PARAGRAPH, SymfonyNodes\ParagraphNode::class),
84+
new NodeInstantiator(NodeTypes::SPAN, SymfonyNodes\SpanNode::class),
85+
new NodeInstantiator(NodeTypes::TABLE, SymfonyNodes\TableNode::class),
86+
new NodeInstantiator(NodeTypes::TITLE, SymfonyNodes\TitleNode::class),
87+
new NodeInstantiator(NodeTypes::TOC, SymfonyNodes\TocNode::class),
88+
new NodeInstantiator(NodeTypes::DOCUMENT, Document::class),
89+
new NodeInstantiator(NodeTypes::SEPARATOR, ParserNodes\SeparatorNode::class),
90+
new NodeInstantiator(NodeTypes::QUOTE, ParserNodes\QuoteNode::class)
91+
);
92+
}
93+
}

_build/src/NodeFactory.php

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

_build/src/Nodes/ParagraphNode.php

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
3+
namespace SymfonyDocs\Nodes;
4+
5+
use Doctrine\RST\Nodes\Node;
6+
use Doctrine\RST\Nodes\ParagraphNode as Base;
7+
use function trim;
8+
9+
class ParagraphNode extends Base
10+
{
11+
/** @var string */
12+
private $class = '';
13+
14+
/**
15+
* @return string
16+
*/
17+
public function getClass(): ?string
18+
{
19+
return $this->class;
20+
}
21+
22+
/**
23+
* @param string $class
24+
*
25+
* @return $this
26+
*/
27+
public function setClass(?string $class)
28+
{
29+
$this->class = $class;
30+
31+
return $this;
32+
}
33+
34+
public function render() : string
35+
{
36+
if ($this->value instanceof Node) {
37+
$text = trim($this->value->render());
38+
} else {
39+
$text = trim($this->value);
40+
}
41+
42+
if ($text !== '') {
43+
if ($this->class) {
44+
return sprintf('<p class="%s">%s</p>', $this->class, $text);
45+
}
46+
47+
return '<p>' . $text . '</p>';
48+
}
49+
50+
return '';
51+
}
52+
}

_build/src/Nodes/SpanNode.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66

77
class SpanNode extends Span
88
{
9+
public function literal(string $text) : string
10+
{
11+
return '<code class="notranslate">' . $text . '</code>';
12+
}
13+
914
public function link(?string $url, string $title, array $attributes = []): string
1015
{
1116
if (isset($attributes['is-ref'])) {

0 commit comments

Comments
 (0)