File tree Expand file tree Collapse file tree 6 files changed +137
-4
lines changed
Expand file tree Collapse file tree 6 files changed +137
-4
lines changed Original file line number Diff line number Diff line change 1212use Tempest \Highlight \Languages \Diff \DiffLanguage ;
1313use Tempest \Highlight \Languages \DocComment \DocCommentLanguage ;
1414use Tempest \Highlight \Languages \Dockerfile \DockerfileLanguage ;
15+ use Tempest \Highlight \Languages \DotEnv \DotEnvLanguage ;
1516use Tempest \Highlight \Languages \Ellison \EllisonLanguage ;
1617use Tempest \Highlight \Languages \Gdscript \GdscriptLanguage ;
1718use Tempest \Highlight \Languages \Html \HtmlLanguage ;
@@ -55,6 +56,7 @@ public function __construct(
5556 ->addLanguage (new SqlLanguage ())
5657 ->addLanguage (new XmlLanguage ())
5758 ->addLanguage (new YamlLanguage ())
59+ ->addLanguage (new DotEnvLanguage ())
5860 ->addLanguage (new TwigLanguage ());
5961 }
6062
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Tempest \Highlight \Languages \DotEnv ;
4+
5+ use Tempest \Highlight \Languages \Base \BaseLanguage ;
6+ use Tempest \Highlight \Languages \DotEnv \Patterns \DotEnvCommentPattern ;
7+ use Tempest \Highlight \Languages \DotEnv \Patterns \DotEnvKeyPattern ;
8+
9+ final class DotEnvLanguage extends BaseLanguage
10+ {
11+ public function getName (): string
12+ {
13+ return 'dotenv ' ;
14+ }
15+
16+ public function getAliases (): array
17+ {
18+ return ['env ' ];
19+ }
20+
21+ public function getPatterns (): array
22+ {
23+ return [
24+ ...parent ::getPatterns (),
25+ new DotEnvKeyPattern (),
26+ new DotEnvCommentPattern (),
27+ ];
28+ }
29+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Tempest \Highlight \Languages \DotEnv \Patterns ;
4+
5+ use Tempest \Highlight \IsPattern ;
6+ use Tempest \Highlight \Pattern ;
7+ use Tempest \Highlight \PatternTest ;
8+ use Tempest \Highlight \Tokens \TokenType ;
9+ use Tempest \Highlight \Tokens \TokenTypeEnum ;
10+
11+ #[PatternTest(input: '# FOO=bar ' , output: '# FOO=bar ' )]
12+ final class DotEnvCommentPattern implements Pattern
13+ {
14+ use IsPattern;
15+
16+ public function getPattern (): string
17+ {
18+ return '/(?<match>\#.*)/ ' ;
19+ }
20+
21+ public function getTokenType (): TokenType
22+ {
23+ return TokenTypeEnum::COMMENT ;
24+ }
25+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Tempest \Highlight \Languages \DotEnv \Patterns ;
4+
5+ use Tempest \Highlight \IsPattern ;
6+ use Tempest \Highlight \Pattern ;
7+ use Tempest \Highlight \PatternTest ;
8+ use Tempest \Highlight \Tokens \TokenType ;
9+ use Tempest \Highlight \Tokens \TokenTypeEnum ;
10+
11+ #[PatternTest(input: 'FOO=bar ' , output: 'FOO ' )]
12+ final class DotEnvKeyPattern implements Pattern
13+ {
14+ use IsPattern;
15+
16+ public function getPattern (): string
17+ {
18+ return '/(?<match>[\w].*)=/ ' ;
19+ }
20+
21+ public function getTokenType (): TokenType
22+ {
23+ return TokenTypeEnum::KEYWORD ;
24+ }
25+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Languages \DotEnv ;
4+
5+ use PHPUnit \Framework \Attributes \DataProvider ;
6+ use PHPUnit \Framework \TestCase ;
7+ use Tempest \Highlight \Highlighter ;
8+
9+ final class DotEnvLanguageTest extends TestCase
10+ {
11+
12+ #[DataProvider('data ' )]
13+ public function test_highlight (string $ content , string $ expected ): void
14+ {
15+ $ highlighter = new Highlighter ();
16+
17+ $ this ->assertSame (
18+ $ expected ,
19+ $ highlighter ->parse ($ content , 'dotenv ' ),
20+ );
21+
22+ $ this ->assertSame (
23+ $ expected ,
24+ $ highlighter ->parse ($ content , 'env ' ),
25+ );
26+ }
27+
28+ public static function data (): array
29+ {
30+ return [
31+ [
32+ <<<ENV
33+ # Enable or disable discovery cache. Can be `true`, `partial` or `false`.
34+ DISCOVERY_CACHE=false
35+
36+ # Overwrite default log paths (null = default)
37+ DEBUG_LOG_PATH=null
38+ SERVER_LOG_PATH=null
39+ ENV ,
40+ '<span class="hl-comment"># Enable or disable discovery cache. Can be `true`, `partial` or `false`.</span>
41+ <span class="hl-keyword">DISCOVERY_CACHE</span>=false
42+
43+ <span class="hl-comment"># Overwrite default log paths (null = default)</span>
44+ <span class="hl-keyword">DEBUG_LOG_PATH</span>=null
45+ <span class="hl-keyword">SERVER_LOG_PATH</span>=null ' ,
46+ ]
47+ ];
48+ }
49+ }
Original file line number Diff line number Diff line change 1- ``` php
2- public function __construct(
3- private(set) Author $author,
4- ) {}
1+ ``` dotenv
2+ # Enable or disable discovery cache. Can be `true`, `partial` or `false`.
3+ DISCOVERY_CACHE=false
4+
5+ # Overwrite default log paths (null = default)
6+ DEBUG_LOG_PATH=null
7+ SERVER_LOG_PATH=null
58```
You can’t perform that action at this time.
0 commit comments