Skip to content

Commit 33b8b2c

Browse files
committed
Inline namespace support (#170)
1 parent 00bfd59 commit 33b8b2c

File tree

6 files changed

+34
-3
lines changed

6 files changed

+34
-3
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
},
2323
"require-dev": {
2424
"phpunit/phpunit": "^10.0",
25-
"phpstan/phpstan": "^1.10.0",
25+
"phpstan/phpstan": "^1.12.0",
2626
"friendsofphp/php-cs-fixer": "^3.84",
2727
"league/commonmark": "^2.4",
2828
"assertchris/ellison": "^1.0.2",
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tempest\Highlight\Languages\Php\Patterns;
6+
7+
use Tempest\Highlight\IsPattern;
8+
use Tempest\Highlight\Pattern;
9+
use Tempest\Highlight\PatternTest;
10+
use Tempest\Highlight\Tokens\TokenType;
11+
use Tempest\Highlight\Tokens\TokenTypeEnum;
12+
13+
#[PatternTest('createOrModify(namespace\push', 'namespace')]
14+
final class InlineNamespacePattern implements Pattern
15+
{
16+
use IsPattern;
17+
18+
public function getPattern(): string
19+
{
20+
return '/(?<match>namespace)\\\\/';
21+
}
22+
23+
public function getTokenType(): TokenType
24+
{
25+
return TokenTypeEnum::KEYWORD;
26+
}
27+
}

src/Languages/Php/PhpLanguage.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use Tempest\Highlight\Languages\Php\Patterns\FunctionNamePattern;
2727
use Tempest\Highlight\Languages\Php\Patterns\GroupedTypePattern;
2828
use Tempest\Highlight\Languages\Php\Patterns\ImplementsPattern;
29+
use Tempest\Highlight\Languages\Php\Patterns\InlineNamespacePattern;
2930
use Tempest\Highlight\Languages\Php\Patterns\InstanceOfPattern;
3031
use Tempest\Highlight\Languages\Php\Patterns\KeywordPattern;
3132
use Tempest\Highlight\Languages\Php\Patterns\MultilineSingleDocCommentPattern;
@@ -171,6 +172,7 @@ public function getPatterns(): array
171172
new ShortFunctionReferencePattern(),
172173
new PropertyHookSetPattern(),
173174
new PropertyHookGetPattern(),
175+
new InlineNamespacePattern(),
174176

175177
// COMMENTS
176178
new MultilineSingleDocCommentPattern(),

tests/Languages/Base/Injections/AdditionInjectionTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ public function test_null_content_is_prevented(): void
3131
$content = <<<TXT
3232
{~'_'~}
3333
TXT;
34-
new Highlighter()->parse($content, 'php');
34+
35+
(new Highlighter())->parse($content, 'php');
3536

3637
$this->assertTrue(true);
3738
}

tests/Languages/Php/PhpLanguageTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ public function info(
137137
<span class="hl-keyword">public</span> <span class="hl-type">?array</span> <span class="hl-property">$chapters</span>,
138138
</span>) {}'],
139139
['public static function new(mixed ...$params): self;', '<span class="hl-keyword">public</span> <span class="hl-keyword">static</span> <span class="hl-keyword">function</span> <span class="hl-property">new</span>(<span class="hl-injection"><span class="hl-type">mixed</span> ...$params</span>): <span class="hl-type">self</span>;'],
140+
['return $this->createOrModify(namespace\push($this->value, $value));', '<span class="hl-keyword">return</span> <span class="hl-variable">$this</span>-&gt;<span class="hl-property">createOrModify</span>(<span class="hl-keyword">namespace</span>\<span class="hl-property">push</span>(<span class="hl-variable">$this</span>-&gt;<span class="hl-property">value</span>, <span class="hl-variable">$value</span>));'],
140141
];
141142
}
142143
}

tests/targets/test.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
```php
2-
{~'_'~}
2+
return $this->createOrModify(namespace\push($this->value, $value));
33
```

0 commit comments

Comments
 (0)