File tree Expand file tree Collapse file tree 4 files changed +37
-2
lines changed
Expand file tree Collapse file tree 4 files changed +37
-2
lines changed Original file line number Diff line number Diff line change 88use Tempest \Highlight \Languages \Dockerfile \Patterns \ImageAliasKeywordPattern ;
99use Tempest \Highlight \Languages \Dockerfile \Patterns \ImageAliasNamePattern ;
1010use Tempest \Highlight \Languages \Dockerfile \Patterns \ImageNamePattern ;
11+ use Tempest \Highlight \Languages \Dockerfile \Patterns \ImageTagPattern ;
1112use Tempest \Highlight \Languages \Dockerfile \Patterns \KeywordPattern ;
1213
1314class DockerfileLanguage extends BaseLanguage
@@ -42,6 +43,7 @@ public function getPatterns(): array
4243 new ImageNamePattern (),
4344 new ImageAliasKeywordPattern (),
4445 new ImageAliasNamePattern (),
46+ new ImageTagPattern (),
4547 ];
4648 }
4749}
Original file line number Diff line number Diff line change @@ -24,6 +24,6 @@ public function getPattern(): string
2424
2525 public function getTokenType (): TokenTypeEnum
2626 {
27- return TokenTypeEnum::VALUE ;
27+ return TokenTypeEnum::KEYWORD ;
2828 }
2929}
Original file line number Diff line number Diff line change 1212#[PatternTest(input: 'FROM php ' , output: 'php ' )]
1313#[PatternTest(input: ' FROM php ' , output: 'php ' )]
1414#[PatternTest(input: 'FROM php:8.1 ' , output: 'php ' )]
15+ #[PatternTest(input: 'FROM php/cli:8.1 ' , output: 'php/cli ' )]
1516#[PatternTest(input: 'FROM php:8.1 AS stage-one ' , output: 'php ' )]
17+
1618final readonly class ImageNamePattern implements Pattern
1719{
1820 use IsPattern;
1921
2022 public function getPattern (): string
2123 {
22- return "/^[\s]*FROM[\s](?<match>[\w]+)/m " ;
24+ return "/^[\s]*FROM[\s](?<match>[\w\/ ]+)/m " ;
2325 }
2426
2527 public function getTokenType (): TokenTypeEnum
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Tempest \Highlight \Languages \Dockerfile \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: 'FROM php ' , output: null )]
13+ #[PatternTest(input: 'FROM php ' , output: null )]
14+ #[PatternTest(input: 'FROM php:8.1 ' , output: '8.1 ' )]
15+ #[PatternTest(input: 'FROM php/cli:8.1 ' , output: '8.1 ' )]
16+ #[PatternTest(input: 'FROM php:8.1 AS stage-one ' , output: '8.1 ' )]
17+
18+ final readonly class ImageTagPattern implements Pattern
19+ {
20+ use IsPattern;
21+
22+ public function getPattern (): string
23+ {
24+ return "/^[\s]*FROM[\s][\w\/]+:(?<match>\S+)[\s]?/m " ;
25+ }
26+
27+ public function getTokenType (): TokenTypeEnum
28+ {
29+ return TokenTypeEnum::VALUE ;
30+ }
31+ }
You can’t perform that action at this time.
0 commit comments