Skip to content

Commit 7f7bd81

Browse files
committed
Fix for PHP closure debug highlighting (#131)
1 parent d2fb6c8 commit 7f7bd81

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

src/Languages/Php/Injections/PhpFunctionParametersInjection.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
public function getPattern(): string
1818
{
19-
return '(function|fn)[\s\w]*\((?<match>(.|\n)*?)(use|{|\)[\s]*({|;|:|=>))';
19+
return '(function|fn)[\s\w]*\((?<match>(.|\n)*?)(use\s*\(|{|\)[\s]*({|;|:|=>))';
2020
}
2121

2222
public function parseContent(string $content, Highlighter $highlighter): string
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace Tempest\Highlight\Languages\Php\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('Tempest\Http\{closure}()', 'Tempest\Http\{closure}')]
12+
#[PatternTest('{closure}()', '{closure}')]
13+
final class ClosureDebugPattern implements Pattern
14+
{
15+
use IsPattern;
16+
17+
public function getPattern(): string
18+
{
19+
return '(?<match>[\w\\\\]*\{closure\})\(';
20+
}
21+
22+
public function getTokenType(): TokenType
23+
{
24+
return TokenTypeEnum::PROPERTY;
25+
}
26+
}

src/Languages/Php/PhpLanguage.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Tempest\Highlight\Languages\Php\Patterns\ClassNamePattern;
1616
use Tempest\Highlight\Languages\Php\Patterns\ClassPropertyPattern;
1717
use Tempest\Highlight\Languages\Php\Patterns\ClassResolutionPattern;
18+
use Tempest\Highlight\Languages\Php\Patterns\ClosureDebugPattern;
1819
use Tempest\Highlight\Languages\Php\Patterns\ConstantNamePattern;
1920
use Tempest\Highlight\Languages\Php\Patterns\ConstantPropertyPattern;
2021
use Tempest\Highlight\Languages\Php\Patterns\ConstantTypesPattern;
@@ -195,6 +196,7 @@ public function getPatterns(): array
195196
new EnumBackedTypePattern(),
196197
new GroupedTypePattern(),
197198
new PropertyHookSetParameterTypePattern(),
199+
new ClosureDebugPattern(),
198200

199201
// PROPERTIES
200202
new ClassPropertyPattern(),

tests/Languages/Php/PhpLanguageTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ public function info(
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>;'],
140140
['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>));'],
141141
['function () use ($request) {', '<span class="hl-keyword">function</span> (<span class="hl-injection">) </span><span class="hl-keyword">use</span> (<span class="hl-variable">$request</span>) {'],
142+
['Tempest\Http\GenericRouter::Tempest\Http\{closure}()', '<span class="hl-type">Tempest\Http\GenericRouter</span>::<span class="hl-property">Tempest\Http\{closure}</span>()'],
142143
];
143144
}
144145
}

0 commit comments

Comments
 (0)