Skip to content

Commit ec741e0

Browse files
authored
Use correct version in docs (#106)
1 parent 7788244 commit ec741e0

File tree

6 files changed

+44
-10
lines changed

6 files changed

+44
-10
lines changed

src/Markdown/MarkdownInitializer.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use App\Markdown\Symbols\FqcnParser;
1515
use App\Markdown\Symbols\FunctionParser;
1616
use App\Markdown\Symbols\HandleParser;
17+
use App\Web\Documentation\Version;
1718
use League\CommonMark\Environment\Environment;
1819
use League\CommonMark\Extension\Attributes\AttributesExtension;
1920
use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
@@ -39,17 +40,18 @@ public function initialize(Container $container): MarkdownConverter
3940
$highlighter = $container->get(Highlighter::class, tag: 'project');
4041

4142
$codeBlockRenderer = new CodeBlockRenderer($highlighter);
43+
$version = $container->get(Version::class);
4244

4345
$environment
4446
->addExtension(new CommonMarkCoreExtension())
4547
->addExtension(new FrontMatterExtension())
4648
->addExtension(new AttributesExtension())
4749
->addExtension(new AlertExtension())
4850
->addExtension(new CodeGroupExtension())
49-
->addInlineParser(new TempestPackageParser())
50-
->addInlineParser(new FqcnParser())
51-
->addInlineParser(new AttributeParser())
52-
->addInlineParser(new FunctionParser())
51+
->addInlineParser(new TempestPackageParser($version))
52+
->addInlineParser(new FqcnParser($version))
53+
->addInlineParser(new AttributeParser($version))
54+
->addInlineParser(new FunctionParser($version))
5355
->addInlineParser(new HandleParser())
5456
->addRenderer(FencedCode::class, $codeBlockRenderer)
5557
->addRenderer(Code::class, new InlineCodeBlockRenderer($highlighter))

src/Markdown/Symbols/AttributeParser.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,21 @@
44

55
namespace App\Markdown\Symbols;
66

7+
use App\Web\Documentation\Version;
78
use League\CommonMark\Extension\CommonMark\Node\Inline\Code;
89
use League\CommonMark\Extension\CommonMark\Node\Inline\Link;
910
use League\CommonMark\Parser\Inline\InlineParserInterface;
1011
use League\CommonMark\Parser\Inline\InlineParserMatch;
1112
use League\CommonMark\Parser\InlineParserContext;
1213
use Override;
13-
use Tempest\Support\Str;
1414

1515
use function Tempest\Support\str;
1616
use function Tempest\Support\Str\to_kebab_case;
1717

1818
final readonly class AttributeParser implements InlineParserInterface
1919
{
20+
public function __construct(private Version $version) {}
21+
2022
#[Override]
2123
public function getMatchDefinition(): InlineParserMatch
2224
{
@@ -41,7 +43,7 @@ public function parse(InlineParserContext $inlineContext): bool
4143
->replaceRegex("/^(\w+)/", static fn (array $matches) => sprintf('packages/%s/src', to_kebab_case($matches[0])))
4244
->replaceEvery(['date-time' => 'datetime'])
4345
->replace('\\', '/')
44-
->prepend('https://github.com/tempestphp/tempest-framework/blob/main/')
46+
->prepend('https://github.com/tempestphp/tempest-framework/blob/' . $this->version->getBranch() . '/')
4547
->append('.php')
4648
->toString();
4749

src/Markdown/Symbols/FqcnParser.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace App\Markdown\Symbols;
66

7+
use App\Web\Documentation\Version;
78
use League\CommonMark\Extension\CommonMark\Node\Inline\Code;
89
use League\CommonMark\Extension\CommonMark\Node\Inline\Link;
910
use League\CommonMark\Parser\Inline\InlineParserInterface;
@@ -19,6 +20,8 @@
1920

2021
final readonly class FqcnParser implements InlineParserInterface
2122
{
23+
public function __construct(private Version $version) {}
24+
2225
#[Override]
2326
public function getMatchDefinition(): InlineParserMatch
2427
{
@@ -43,7 +46,7 @@ public function parse(InlineParserContext $inlineContext): bool
4346
->replaceRegex("/^(\w+)/", static fn (array $matches) => sprintf('packages/%s/src', to_kebab_case($matches[0])))
4447
->replaceEvery(['date-time' => 'datetime'])
4548
->replace('\\', '/')
46-
->prepend('https://github.com/tempestphp/tempest-framework/blob/main/')
49+
->prepend('https://github.com/tempestphp/tempest-framework/blob/' . $this->version->getBranch() . '/')
4750
->append('.php')
4851
->toString();
4952

src/Markdown/Symbols/FunctionParser.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace App\Markdown\Symbols;
66

7+
use App\Web\Documentation\Version;
78
use League\CommonMark\Extension\CommonMark\Node\Inline\Code;
89
use League\CommonMark\Extension\CommonMark\Node\Inline\Link;
910
use League\CommonMark\Parser\Inline\InlineParserInterface;
@@ -18,6 +19,8 @@
1819

1920
final readonly class FunctionParser implements InlineParserInterface
2021
{
22+
public function __construct(private Version $version) {}
23+
2124
#[Override]
2225
public function getMatchDefinition(): InlineParserMatch
2326
{
@@ -53,7 +56,7 @@ public function parse(InlineParserContext $inlineContext): bool
5356

5457
$url = str($reflection->getFileName())
5558
->afterLast('tempest/framework/')
56-
->prepend('https://github.com/tempestphp/tempest-framework/blob/main/')
59+
->prepend('https://github.com/tempestphp/tempest-framework/blob/' . $this->version->getBranch() . '/')
5760
->append("#L{$reflection->getStartLine()}-L{$reflection->getEndLine()}")
5861
->toString();
5962

src/Markdown/TempestPackageParser.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace App\Markdown;
66

7+
use App\Web\Documentation\Version;
78
use League\CommonMark\Extension\CommonMark\Node\Inline\Code;
89
use League\CommonMark\Extension\CommonMark\Node\Inline\Link;
910
use League\CommonMark\Parser\Inline\InlineParserInterface;
@@ -15,6 +16,8 @@
1516

1617
final readonly class TempestPackageParser implements InlineParserInterface
1718
{
19+
public function __construct(private Version $version) {}
20+
1821
#[Override]
1922
public function getMatchDefinition(): InlineParserMatch
2023
{
@@ -37,9 +40,9 @@ public function parse(InlineParserContext $inlineContext): bool
3740

3841
$url = match ($package) {
3942
'app' => 'https://github.com/tempestphp/tempest-app',
40-
default => $url = str($package)
43+
default => str($package)
4144
->kebab()
42-
->prepend('https://github.com/tempestphp/tempest-framework/tree/main/packages/')
45+
->prepend('https://github.com/tempestphp/tempest-framework/tree/' . $this->version->getBranch() . '/packages/')
4346
->toString(),
4447
};
4548

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace App\Web\Documentation;
4+
5+
use Tempest\Container\Container;
6+
use Tempest\Container\Initializer;
7+
use Tempest\Router\MatchedRoute;
8+
9+
final class VersionInitializer implements Initializer
10+
{
11+
public function initialize(Container $container): Version
12+
{
13+
$version = $container->get(MatchedRoute::class)?->params['version'] ?? null;
14+
15+
if (! $version) {
16+
return Version::default();
17+
}
18+
19+
return Version::tryFromString($version) ?? Version::default();
20+
}
21+
}

0 commit comments

Comments
 (0)