Skip to content

Commit 05a215d

Browse files
committed
Add file reference
1 parent 9d4cb70 commit 05a215d

File tree

5 files changed

+56
-0
lines changed

5 files changed

+56
-0
lines changed

src/KernelFactory.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ private static function getReferences(BuildConfig $buildConfig): array
103103
{
104104
return [
105105
new SymfonyReferences\ClassReference($buildConfig->getSymfonyRepositoryUrl()),
106+
new SymfonyReferences\FileReference($buildConfig->getSymfonyRepositoryUrl()),
106107
new SymfonyReferences\MethodReference($buildConfig->getSymfonyRepositoryUrl()),
107108
new SymfonyReferences\NamespaceReference($buildConfig->getSymfonyRepositoryUrl()),
108109
new SymfonyReferences\PhpFunctionReference($buildConfig->getPhpDocUrl()),

src/Reference/FileReference.php

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Docs Builder package.
5+
* (c) Ryan Weaver <ryan@symfonycasts.com>
6+
* For the full copyright and license information, please view the LICENSE
7+
* file that was distributed with this source code.
8+
*/
9+
10+
namespace SymfonyDocsBuilder\Reference;
11+
12+
use Doctrine\RST\Environment;
13+
use Doctrine\RST\References\Reference;
14+
use Doctrine\RST\References\ResolvedReference;
15+
use function Symfony\Component\String\u;
16+
17+
class FileReference extends Reference
18+
{
19+
private $symfonyRepositoryUrl;
20+
21+
public function __construct(string $symfonyRepositoryUrl)
22+
{
23+
$this->symfonyRepositoryUrl = $symfonyRepositoryUrl;
24+
}
25+
26+
public function getName(): string
27+
{
28+
return 'file';
29+
}
30+
31+
public function resolve(Environment $environment, string $data): ResolvedReference
32+
{
33+
$className = u($data);
34+
35+
$linkTarget = $className->afterLast('::');
36+
$linkName = $className->beforeLast('::');
37+
38+
return new ResolvedReference(
39+
$environment->getCurrentFileName(),
40+
$linkName,
41+
sprintf('%s/%s', $this->symfonyRepositoryUrl, $linkTarget),
42+
[],
43+
[
44+
'title' => $linkTarget,
45+
]
46+
);
47+
}
48+
}

tests/IntegrationTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,10 @@ public function parserUnitBlockProvider()
211211
'blockName' => 'references/class',
212212
];
213213

214+
yield 'file-reference' => [
215+
'blockName' => 'references/file',
216+
];
217+
214218
yield 'namespace-reference' => [
215219
'blockName' => 'references/namespace',
216220
];
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<p><a href="https://github.com/symfony/symfony/blob/4.0/src/Symfony/Component/Notifier/Bridge/AmazonSns/README.md" class="reference external" title="Symfony/Component/Notifier/Bridge/AmazonSns/README.md" rel="external noopener noreferrer" target="_blank">Link name</a></p>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
:file:`Link name::Symfony/Component/Notifier/Bridge/AmazonSns/README.md`

0 commit comments

Comments
 (0)