Skip to content

Commit 145bd4e

Browse files
committed
Improve blade namespaced components matching
1 parent b9de098 commit 145bd4e

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

src/Languages/Blade/BladeLanguage.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
use Tempest\Highlight\Languages\Blade\Injections\BladePhpInjection;
1010
use Tempest\Highlight\Languages\Blade\Injections\BladeRawEchoInjection;
1111
use Tempest\Highlight\Languages\Blade\Patterns\BladeCommentPattern;
12+
use Tempest\Highlight\Languages\Blade\Patterns\BladeComponentCloseTagPattern;
13+
use Tempest\Highlight\Languages\Blade\Patterns\BladeComponentOpenTagPattern;
1214
use Tempest\Highlight\Languages\Blade\Patterns\BladeKeywordPattern;
1315
use Tempest\Highlight\Languages\Html\HtmlLanguage;
1416

@@ -34,6 +36,8 @@ public function getPatterns(): array
3436
{
3537
return [
3638
...parent::getPatterns(),
39+
new BladeComponentOpenTagPattern(),
40+
new BladeComponentCloseTagPattern(),
3741
new BladeKeywordPattern(),
3842
new BladeCommentPattern(),
3943
];
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tempest\Highlight\Languages\Blade\Patterns;
6+
7+
use Tempest\Highlight\IsPattern;
8+
use Tempest\Highlight\Pattern;
9+
use Tempest\Highlight\PatternTest;
10+
use Tempest\Highlight\Tokens\TokenTypeEnum;
11+
12+
#[PatternTest(input: '</x-hello>', output: 'x-hello')]
13+
#[PatternTest(input: '</x-hello::world>', output: 'x-hello::world')]
14+
#[PatternTest(input: '</a>', output: 'a')]
15+
final readonly class BladeComponentCloseTagPattern implements Pattern
16+
{
17+
use IsPattern;
18+
19+
public function getPattern(): string
20+
{
21+
return '<\/(?<match>[\w\-\:]+)';
22+
}
23+
24+
public function getTokenType(): TokenTypeEnum
25+
{
26+
return TokenTypeEnum::KEYWORD;
27+
}
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tempest\Highlight\Languages\Blade\Patterns;
6+
7+
use Tempest\Highlight\IsPattern;
8+
use Tempest\Highlight\Pattern;
9+
use Tempest\Highlight\PatternTest;
10+
use Tempest\Highlight\Tokens\TokenTypeEnum;
11+
12+
#[PatternTest(input: '<x-hello attr="">', output: 'x-hello')]
13+
#[PatternTest(input: '<x-hello::world attr="">', output: 'x-hello::world')]
14+
#[PatternTest(input: '<a attr="">', output: 'a')]
15+
final readonly class BladeComponentOpenTagPattern implements Pattern
16+
{
17+
use IsPattern;
18+
19+
public function getPattern(): string
20+
{
21+
return '<(?<match>[\w\-\:]+)';
22+
}
23+
24+
public function getTokenType(): TokenTypeEnum
25+
{
26+
return TokenTypeEnum::KEYWORD;
27+
}
28+
}

0 commit comments

Comments
 (0)