Skip to content

Commit 5345d96

Browse files
committed
[TASK] Use the Textrole factory of the DocumentParserContext
1 parent b3691cb commit 5345d96

File tree

6 files changed

+30
-31
lines changed

6 files changed

+30
-31
lines changed

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
use phpDocumentor\Guides\RestructuredText\Parser\Directive;
1717
use phpDocumentor\Guides\RestructuredText\Parser\DocumentParserContext;
18-
use phpDocumentor\Guides\RestructuredText\TextRoles\TextRoleFactory;
1918

2019
/**
2120
* sets the default interpreted text role, the role that is used for interpreted text without an explicit role.
@@ -24,11 +23,6 @@
2423
*/
2524
class DefaultRoleDirective extends ActionDirective
2625
{
27-
public function __construct(
28-
private readonly TextRoleFactory $textRoleFactory,
29-
) {
30-
}
31-
3226
public function getName(): string
3327
{
3428
return 'default-role';
@@ -39,6 +33,6 @@ public function processAction(
3933
Directive $directive,
4034
): void {
4135
$name = $directive->getData();
42-
$this->textRoleFactory->setDefaultTextRole($name);
36+
$documentParserContext->getTextRoleFactoryForDocument()->setDefaultTextRole($name);
4337
}
4438
}

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
use phpDocumentor\Guides\RestructuredText\Parser\DocumentParserContext;
1818
use phpDocumentor\Guides\RestructuredText\TextRoles\BaseTextRole;
1919
use phpDocumentor\Guides\RestructuredText\TextRoles\GenericTextRole;
20-
use phpDocumentor\Guides\RestructuredText\TextRoles\TextRoleFactory;
2120
use Psr\Log\LoggerInterface;
2221

2322
use function is_string;
@@ -33,7 +32,6 @@ class RoleDirective extends ActionDirective
3332
{
3433
public function __construct(
3534
private readonly LoggerInterface $logger,
36-
private readonly TextRoleFactory $textRoleFactory,
3735
) {
3836
}
3937

@@ -53,7 +51,7 @@ public function processAction(
5351
$role = $match[2];
5452
}
5553

56-
$baseRole = $this->textRoleFactory->getTextRole($role);
54+
$baseRole = $documentParserContext->getTextRoleFactoryForDocument()->getTextRole($role);
5755
if (!$baseRole instanceof BaseTextRole) {
5856
$this->logger->error('Text role "' . $role . '", class ' . $baseRole::class . ' cannot be extended. ');
5957

@@ -71,6 +69,6 @@ public function processAction(
7169
$customRole->setBaseRole($role);
7270
}
7371

74-
$this->textRoleFactory->replaceTextRole($customRole);
72+
$documentParserContext->getTextRoleFactoryForDocument()->replaceTextRole($customRole);
7573
}
7674
}

packages/guides-restructured-text/src/RestructuredText/Parser/Productions/InlineRules/DefaultTextRoleRule.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,12 @@
77
use phpDocumentor\Guides\Nodes\Inline\InlineNode;
88
use phpDocumentor\Guides\RestructuredText\Parser\DocumentParserContext;
99
use phpDocumentor\Guides\RestructuredText\Parser\InlineLexer;
10-
use phpDocumentor\Guides\RestructuredText\TextRoles\TextRoleFactory;
1110

1211
/**
1312
* Rule to parse for default text roles such as `something`
1413
*/
1514
class DefaultTextRoleRule extends AbstractInlineRule
1615
{
17-
public function __construct(private readonly TextRoleFactory $textRoleFactory)
18-
{
19-
}
20-
2116
public function applies(InlineLexer $lexer): bool
2217
{
2318
return $lexer->token?->type === InlineLexer::BACKTICK;
@@ -40,7 +35,10 @@ public function apply(DocumentParserContext $documentParserContext, InlineLexer
4035

4136
$lexer->moveNext();
4237

43-
return $this->textRoleFactory->getDefaultTextRole()->processNode($documentParserContext, '', $text, $text);
38+
return $documentParserContext
39+
->getTextRoleFactoryForDocument()
40+
->getDefaultTextRole()
41+
->processNode($documentParserContext, '', $text, $text);
4442

4543
default:
4644
$text .= $token->value;

packages/guides-restructured-text/src/RestructuredText/Parser/Productions/InlineRules/TextRoleRule.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use phpDocumentor\Guides\Nodes\Inline\InlineNode;
88
use phpDocumentor\Guides\RestructuredText\Parser\DocumentParserContext;
99
use phpDocumentor\Guides\RestructuredText\Parser\InlineLexer;
10-
use phpDocumentor\Guides\RestructuredText\TextRoles\TextRoleFactory;
1110

1211
use function substr;
1312

@@ -16,10 +15,6 @@
1615
*/
1716
class TextRoleRule extends AbstractInlineRule
1817
{
19-
public function __construct(private readonly TextRoleFactory $textRoleFactory)
20-
{
21-
}
22-
2318
public function applies(InlineLexer $lexer): bool
2419
{
2520
return $lexer->token?->type === InlineLexer::COLON;
@@ -54,7 +49,7 @@ public function apply(DocumentParserContext $documentParserContext, InlineLexer
5449
}
5550

5651
if ($inText) {
57-
$textRole = $this->textRoleFactory->getTextRole($role, $domain);
52+
$textRole = $documentParserContext->getTextRoleFactoryForDocument()->getTextRole($role, $domain);
5853
$fullRole = ($domain ? $domain . ':' : '') . $role;
5954
$lexer->moveNext();
6055

packages/guides-restructured-text/tests/unit/Parser/InlineTokenParserTest.php

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
use phpDocumentor\Guides\Nodes\Inline\StrongInlineNode;
1717
use phpDocumentor\Guides\Nodes\Inline\VariableInlineNode;
1818
use phpDocumentor\Guides\Nodes\InlineCompoundNode;
19+
use phpDocumentor\Guides\ParserContext;
20+
use phpDocumentor\Guides\RestructuredText\MarkupLanguageParser;
1921
use phpDocumentor\Guides\RestructuredText\Parser\Productions\InlineRules\AnnotationRoleRule;
2022
use phpDocumentor\Guides\RestructuredText\Parser\Productions\InlineRules\AnonymousPhraseRule;
2123
use phpDocumentor\Guides\RestructuredText\Parser\Productions\InlineRules\AnonymousReferenceRule;
@@ -37,38 +39,43 @@
3739
use phpDocumentor\Guides\RestructuredText\TextRoles\LiteralTextRole;
3840
use phpDocumentor\Guides\RestructuredText\TextRoles\ReferenceTextRole;
3941
use PHPUnit\Framework\Attributes\DataProvider;
40-
use PHPUnit\Framework\MockObject\MockObject;
4142
use PHPUnit\Framework\TestCase;
4243

4344
final class InlineTokenParserTest extends TestCase
4445
{
4546
public Logger $logger;
46-
private DocumentParserContext&MockObject $documentParserContext;
47+
private DocumentParserContext $documentParserContext;
4748
private InlineParser $inlineTokenParser;
49+
private DefaultTextRoleFactory $textRoleFactory;
4850

4951
public function setUp(): void
5052
{
5153
$this->logger = new Logger('test');
52-
$this->documentParserContext = $this->createMock(DocumentParserContext::class);
53-
$defaultTextRoleFactory = new DefaultTextRoleFactory(
54+
$this->textRoleFactory = new DefaultTextRoleFactory(
5455
new GenericTextRole(),
5556
new LiteralTextRole(),
5657
[
5758
new ReferenceTextRole($this->logger),
5859
new DocReferenceTextRole($this->logger),
5960
],
6061
);
62+
$this->documentParserContext = new DocumentParserContext(
63+
'',
64+
$this->createStub(ParserContext::class),
65+
$this->textRoleFactory,
66+
$this->createStub(MarkupLanguageParser::class),
67+
);
6168
$this->inlineTokenParser = new InlineParser([
6269
new NamedReferenceRule(),
6370
new AnonymousReferenceRule(),
6471
new PlainTextRule(),
6572
new InternalReferenceRule(),
66-
new TextRoleRule($defaultTextRoleFactory),
73+
new TextRoleRule(),
6774
new NamedPhraseRule(),
6875
new AnonymousPhraseRule(),
6976
new AnnotationRoleRule(),
7077
new LiteralRule(),
71-
new DefaultTextRoleRule($defaultTextRoleFactory),
78+
new DefaultTextRoleRule(),
7279
new StandaloneHyperlinkRule(),
7380
new EmphasisRule(),
7481
new StrongRule(),

packages/guides-restructured-text/tests/unit/Parser/Productions/InlineRules/TextRoleRuleTest.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
use Generator;
88
use phpDocumentor\Guides\Nodes\Inline\InlineNode;
9+
use phpDocumentor\Guides\ParserContext;
10+
use phpDocumentor\Guides\RestructuredText\MarkupLanguageParser;
911
use phpDocumentor\Guides\RestructuredText\Parser\DocumentParserContext;
1012
use phpDocumentor\Guides\RestructuredText\Parser\InlineLexer;
1113
use phpDocumentor\Guides\RestructuredText\TextRoles\TextRole;
@@ -87,10 +89,15 @@ public function __construct(
8789
$lexer->moveNext();
8890
$lexer->moveNext();
8991

90-
$textRoleRule = new TextRoleRule($textRoleFactory);
92+
$textRoleRule = new TextRoleRule();
9193
self::assertTrue($textRoleRule->applies($lexer));
9294
$node = $textRoleRule->apply(
93-
$this->createStub(DocumentParserContext::class),
95+
new DocumentParserContext(
96+
'',
97+
$this->createStub(ParserContext::class),
98+
$textRoleFactory,
99+
$this->createStub(MarkupLanguageParser::class),
100+
),
94101
$lexer,
95102
);
96103

0 commit comments

Comments
 (0)