Skip to content

Commit 03b1f47

Browse files
authored
Merge pull request #1379 from phpDocumentor/task/migrate-directive-attributes-trivial
[TASK] Migrate 7 trivial directives to the #[Directive] attribute model
2 parents 083ef8e + f95645a commit 03b1f47

7 files changed

Lines changed: 28 additions & 112 deletions

File tree

packages/guides-restructured-text/src/RestructuredText/Directives/ContainerDirective.php

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,39 +13,21 @@
1313

1414
namespace phpDocumentor\Guides\RestructuredText\Directives;
1515

16-
use phpDocumentor\Guides\Nodes\CollectionNode;
1716
use phpDocumentor\Guides\Nodes\Node;
1817
use phpDocumentor\Guides\RestructuredText\Nodes\ContainerNode;
19-
use phpDocumentor\Guides\RestructuredText\Parser\BlockContext;
20-
use phpDocumentor\Guides\RestructuredText\Parser\Directive;
18+
use phpDocumentor\Guides\RestructuredText\Nodes\DirectiveNode;
2119

2220
/**
2321
* Divs a sub document in a div with a given class or set of classes.
2422
*
2523
* @link https://docutils.sourceforge.io/docs/ref/rst/directives.html#container
2624
*/
25+
#[Attributes\Directive(name: 'container', aliases: ['div'])]
2726
final class ContainerDirective extends SubDirective
2827
{
29-
public function getName(): string
28+
public function createNode(DirectiveNode $directiveNode): Node
3029
{
31-
return 'container';
32-
}
33-
34-
/** {@inheritDoc} */
35-
public function getAliases(): array
36-
{
37-
return ['div'];
38-
}
39-
40-
/** {@inheritDoc}
41-
*
42-
* @param Directive $directive
43-
*/
44-
protected function processSub(
45-
BlockContext $blockContext,
46-
CollectionNode $collectionNode,
47-
Directive $directive,
48-
): Node {
49-
return (new ContainerNode($collectionNode->getChildren()))->withOptions(['class' => $directive->getData()]);
30+
return (new ContainerNode($directiveNode->getChildren()))
31+
->withOptions(['class' => $directiveNode->getDirective()->getData()]);
5032
}
5133
}

packages/guides-restructured-text/src/RestructuredText/Directives/EpigraphDirective.php

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@
1313

1414
namespace phpDocumentor\Guides\RestructuredText\Directives;
1515

16-
use phpDocumentor\Guides\Nodes\CollectionNode;
1716
use phpDocumentor\Guides\Nodes\Node;
1817
use phpDocumentor\Guides\Nodes\QuoteNode;
19-
use phpDocumentor\Guides\RestructuredText\Parser\BlockContext;
20-
use phpDocumentor\Guides\RestructuredText\Parser\Directive;
18+
use phpDocumentor\Guides\RestructuredText\Nodes\DirectiveNode;
2119

2220
/**
2321
* An epigraph is an apposite (suitable, apt, or pertinent) short inscription,
@@ -26,22 +24,11 @@
2624
*
2725
* https://docutils.sourceforge.io/docs/ref/rst/directives.html#epigraph
2826
*/
27+
#[Attributes\Directive(name: 'epigraph')]
2928
final class EpigraphDirective extends SubDirective
3029
{
31-
public function getName(): string
30+
public function createNode(DirectiveNode $directiveNode): Node
3231
{
33-
return 'epigraph';
34-
}
35-
36-
/** {@inheritDoc}
37-
*
38-
* @param Directive $directive
39-
*/
40-
protected function processSub(
41-
BlockContext $blockContext,
42-
CollectionNode $collectionNode,
43-
Directive $directive,
44-
): Node {
45-
return new QuoteNode($collectionNode->getChildren(), ['epigraph']);
32+
return new QuoteNode($directiveNode->getChildren(), ['epigraph']);
4633
}
4734
}

packages/guides-restructured-text/src/RestructuredText/Directives/HighlightsDirective.php

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,21 @@
1313

1414
namespace phpDocumentor\Guides\RestructuredText\Directives;
1515

16-
use phpDocumentor\Guides\Nodes\CollectionNode;
1716
use phpDocumentor\Guides\Nodes\Node;
1817
use phpDocumentor\Guides\Nodes\QuoteNode;
19-
use phpDocumentor\Guides\RestructuredText\Parser\BlockContext;
20-
use phpDocumentor\Guides\RestructuredText\Parser\Directive;
18+
use phpDocumentor\Guides\RestructuredText\Nodes\DirectiveNode;
2119

2220
/**
2321
* Highlights summarize the main points of a document or section, often consisting of a list.
2422
* The "highlights" directive produces a "highlights"-class block quote.
2523
*
2624
* https://docutils.sourceforge.io/docs/ref/rst/directives.html#highlights
2725
*/
26+
#[Attributes\Directive(name: 'highlights')]
2827
final class HighlightsDirective extends SubDirective
2928
{
30-
public function getName(): string
29+
public function createNode(DirectiveNode $directiveNode): Node
3130
{
32-
return 'highlights';
33-
}
34-
35-
/** {@inheritDoc}
36-
*
37-
* @param Directive $directive
38-
*/
39-
protected function processSub(
40-
BlockContext $blockContext,
41-
CollectionNode $collectionNode,
42-
Directive $directive,
43-
): Node {
44-
return new QuoteNode($collectionNode->getChildren(), ['highlights']);
31+
return new QuoteNode($directiveNode->getChildren(), ['highlights']);
4532
}
4633
}

packages/guides-restructured-text/src/RestructuredText/Directives/IndexDirective.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@
1313

1414
namespace phpDocumentor\Guides\RestructuredText\Directives;
1515

16+
#[Attributes\Directive(name: 'index')]
1617
final class IndexDirective extends SubDirective
1718
{
18-
public function getName(): string
19-
{
20-
return 'index';
21-
}
2219
}

packages/guides-restructured-text/src/RestructuredText/Directives/PullQuoteDirective.php

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@
1313

1414
namespace phpDocumentor\Guides\RestructuredText\Directives;
1515

16-
use phpDocumentor\Guides\Nodes\CollectionNode;
1716
use phpDocumentor\Guides\Nodes\Node;
1817
use phpDocumentor\Guides\Nodes\QuoteNode;
19-
use phpDocumentor\Guides\RestructuredText\Parser\BlockContext;
20-
use phpDocumentor\Guides\RestructuredText\Parser\Directive;
18+
use phpDocumentor\Guides\RestructuredText\Nodes\DirectiveNode;
2119

2220
/**
2321
* A pull-quote is a small selection of text "pulled out and quoted", typically in
@@ -26,22 +24,11 @@
2624
*
2725
* https://docutils.sourceforge.io/docs/ref/rst/directives.html#pull-quote
2826
*/
27+
#[Attributes\Directive(name: 'pull-quote')]
2928
final class PullQuoteDirective extends SubDirective
3029
{
31-
public function getName(): string
30+
public function createNode(DirectiveNode $directiveNode): Node
3231
{
33-
return 'pull-quote';
34-
}
35-
36-
/** {@inheritDoc}
37-
*
38-
* @param Directive $directive
39-
*/
40-
protected function processSub(
41-
BlockContext $blockContext,
42-
CollectionNode $collectionNode,
43-
Directive $directive,
44-
): Node {
45-
return new QuoteNode($collectionNode->getChildren(), ['pull-quote']);
32+
return new QuoteNode($directiveNode->getChildren(), ['pull-quote']);
4633
}
4734
}

packages/guides-restructured-text/src/RestructuredText/Directives/ReplaceDirective.php

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,11 @@
1313

1414
namespace phpDocumentor\Guides\RestructuredText\Directives;
1515

16-
use phpDocumentor\Guides\Nodes\CollectionNode;
1716
use phpDocumentor\Guides\Nodes\InlineCompoundNode;
1817
use phpDocumentor\Guides\Nodes\Node;
1918
use phpDocumentor\Guides\Nodes\ParagraphNode;
2019
use phpDocumentor\Guides\Nodes\ReplacementNode;
21-
use phpDocumentor\Guides\RestructuredText\Parser\BlockContext;
22-
use phpDocumentor\Guides\RestructuredText\Parser\Directive;
20+
use phpDocumentor\Guides\RestructuredText\Nodes\DirectiveNode;
2321

2422
use function count;
2523

@@ -28,25 +26,14 @@
2826
*
2927
* .. |test| replace:: The Test String!
3028
*/
29+
#[Attributes\Directive(name: 'replace')]
3130
final class ReplaceDirective extends SubDirective
3231
{
33-
public function getName(): string
32+
public function createNode(DirectiveNode $directiveNode): Node
3433
{
35-
return 'replace';
36-
}
37-
38-
/** {@inheritDoc}
39-
*
40-
* @param Directive $directive
41-
*/
42-
final protected function processSub(
43-
BlockContext $blockContext,
44-
CollectionNode $collectionNode,
45-
Directive $directive,
46-
): Node {
4734
/** @var array<InlineCompoundNode> $children */
48-
$children = $collectionNode->getChildren();
49-
$data = $directive->getDataNode();
35+
$children = $directiveNode->getChildren();
36+
$data = $directiveNode->getDirective()->getDataNode();
5037
if ($data !== null) {
5138
if (count($children) > 0) {
5239
$children[] = new ParagraphNode([$data]);

packages/guides-restructured-text/src/RestructuredText/Directives/SidebarDirective.php

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,37 +13,26 @@
1313

1414
namespace phpDocumentor\Guides\RestructuredText\Directives;
1515

16-
use phpDocumentor\Guides\Nodes\CollectionNode;
1716
use phpDocumentor\Guides\Nodes\InlineCompoundNode;
1817
use phpDocumentor\Guides\Nodes\Node;
18+
use phpDocumentor\Guides\RestructuredText\Nodes\DirectiveNode;
1919
use phpDocumentor\Guides\RestructuredText\Nodes\SidebarNode;
20-
use phpDocumentor\Guides\RestructuredText\Parser\BlockContext;
21-
use phpDocumentor\Guides\RestructuredText\Parser\Directive;
2220

2321
/**
2422
* Divs a sub document in a div with a given class or set of classes.
2523
*
2624
* https://docutils.sourceforge.io/docs/ref/rst/directives.html#sidebar
2725
*/
26+
#[Attributes\Directive(name: 'sidebar')]
2827
final class SidebarDirective extends SubDirective
2928
{
30-
public function getName(): string
29+
public function createNode(DirectiveNode $directiveNode): Node
3130
{
32-
return 'sidebar';
33-
}
31+
$directive = $directiveNode->getDirective();
3432

35-
/** {@inheritDoc}
36-
*
37-
* @param Directive $directive
38-
*/
39-
protected function processSub(
40-
BlockContext $blockContext,
41-
CollectionNode $collectionNode,
42-
Directive $directive,
43-
): Node {
4433
return new SidebarNode(
4534
$directive->getDataNode() ?? InlineCompoundNode::getPlainTextInlineNode($directive->getData()),
46-
$collectionNode->getChildren(),
35+
$directiveNode->getChildren(),
4736
);
4837
}
4938
}

0 commit comments

Comments
 (0)