Skip to content

[Task] organize directives #596

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{#
A topic is like a block quote with a title, or a self-contained section with no subsections. Use the "topic" directive to indicate a self-contained idea that is separate from the flow of the document. Topics may occur anywhere a section or transition may occur. Body elements and topics may not contain nested topics.

The directive's sole argument is interpreted as the topic title; the next line
must be blank. All subsequent lines make up the topic body, interpreted as body
elements. For example:

.. topic:: Topic Title

Subsequent indented lines comprise
the body of the topic, and are
interpreted as body elements.

https://docutils.sourceforge.io/docs/ref/rst/directives.html#topic
#}

<div class="topic{% if node.classes %} {{ node.classesString }}{% endif %}">
<p class="topic-title">{{ renderNode(node.content) }}</p>
{{ renderNode(node.value) }}
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{%- if node.classes %}
<div class="{{ node.classesString }}">{{ renderNode(node.value) }}</div>
{% else %}
{{ renderNode(node.value) }}
{% endif -%}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
namespace phpDocumentor\Guides\RestructuredText\Directives;

use phpDocumentor\Guides\Nodes\Metadata\MetaNode;
use phpDocumentor\Guides\Nodes\Node;
use phpDocumentor\Guides\RestructuredText\Parser\BlockContext;
use phpDocumentor\Guides\RestructuredText\Parser\Directive;

Expand All @@ -15,24 +14,19 @@
* .. meta::
* :key: value
*/
class MetaDirective extends BaseDirective
class MetaDirective extends ActionDirective
{
public function getName(): string
{
return 'meta';
}

/** {@inheritDoc} */
public function process(
BlockContext $blockContext,
Directive $directive,
): Node|null {
public function processAction(BlockContext $blockContext, Directive $directive): void
{
$document = $blockContext->getDocumentParserContext()->getDocument();

foreach ($directive->getOptions() as $option) {
$document->addHeaderNode(new MetaNode($option->getName(), (string) $option->getValue()));
}

return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

namespace phpDocumentor\Guides\RestructuredText\Directives;

use phpDocumentor\Guides\Nodes\Node;
use phpDocumentor\Guides\RestructuredText\Parser\BlockContext;
use phpDocumentor\Guides\RestructuredText\Parser\Directive;

Expand All @@ -13,21 +12,16 @@
*
* .. title:: Page title
*/
class TitleDirective extends BaseDirective
class TitleDirective extends ActionDirective
{
public function getName(): string
{
return 'title';
}

/** {@inheritDoc} */
public function process(
BlockContext $blockContext,
Directive $directive,
): Node|null {
public function processAction(BlockContext $blockContext, Directive $directive): void
{
$document = $blockContext->getDocumentParserContext()->getDocument();
$document->setMetaTitle($directive->getData());

return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,21 @@

namespace phpDocumentor\Guides\RestructuredText\Directives;

use phpDocumentor\Guides\Nodes\CollectionNode;
use phpDocumentor\Guides\Nodes\Node;
use phpDocumentor\Guides\RestructuredText\Parser\BlockContext;
use phpDocumentor\Guides\RestructuredText\Parser\Directive;

/**
* Todo directives are treated as comments, omitting all content or options
*/
class TodoDirective extends SubDirective
class TodoDirective extends ActionDirective
{
public function getName(): string
{
return 'todo';
}

protected function processSub(
CollectionNode $collectionNode,
Directive $directive,
): Node|null {
return null;
public function processAction(BlockContext $blockContext, Directive $directive): void
{
// Todo directives are treated as comments
}
}

This file was deleted.

This file was deleted.

21 changes: 21 additions & 0 deletions tests/Integration/tests/directive-topic/expected/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Directive tests</title>

</head>
<body>
<div class="section" id="directive-tests">
<h1>Directive tests</h1>


<div class="topic someclass">
<p class="topic-title">This is the <strong>topic</strong></p>
<p>Lorem Ipsum Dolor</p><div class="rubric">Some Rubric</div>
<p>Dolor sit!</p>
</div>

</div>

</body>
</html>
11 changes: 11 additions & 0 deletions tests/Integration/tests/directive-topic/input/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Directive tests
===============

.. topic:: This is the **topic**
:class: someClass

Lorem Ipsum Dolor

.. rubric:: Some Rubric

Dolor sit!
16 changes: 16 additions & 0 deletions tests/Integration/tests/directive-wrap/expected/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Directive tests</title>

</head>
<body>
<div class="section" id="directive-tests">
<h1>Directive tests</h1>

<div class="someclass"><p>Lorem Ipsum Dolor</p></div>

</div>

</body>
</html>
7 changes: 7 additions & 0 deletions tests/Integration/tests/directive-wrap/input/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Directive tests
===============

.. wrap::
:class: someClass

Lorem Ipsum Dolor