Skip to content

Commit 393e089

Browse files
committed
Add PHP casts
1 parent 42cba17 commit 393e089

File tree

4 files changed

+42
-1
lines changed

4 files changed

+42
-1
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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(input: '(string) $bar', output: 'string')]
12+
#[PatternTest(input: '(int) $bar', output: 'int')]
13+
#[PatternTest(input: '(integer) $bar', output: 'integer')]
14+
#[PatternTest(input: '(void) $bar', output: 'void')]
15+
#[PatternTest(input: '(bool) $bar', output: 'bool')]
16+
#[PatternTest(input: '(boolean) $bar', output: 'boolean')]
17+
#[PatternTest(input: '(float) $bar', output: 'float')]
18+
#[PatternTest(input: '(double) $bar', output: 'double')]
19+
#[PatternTest(input: '(real) $bar', output: 'real')]
20+
#[PatternTest(input: '(binary) $bar', output: 'binary')]
21+
#[PatternTest(input: '(array) $bar', output: 'array')]
22+
#[PatternTest(input: '(object) $bar', output: 'object')]
23+
#[PatternTest(input: '(unset) $bar', output: 'unset')]
24+
final class CastPattern implements Pattern
25+
{
26+
use IsPattern;
27+
28+
public function getPattern(): string
29+
{
30+
return '\((?<match>(string|int|integer|void|bool|boolean|float|double|real|binary|array|object|unset))\)';
31+
}
32+
33+
public function getTokenType(): TokenType
34+
{
35+
return TokenTypeEnum::TYPE;
36+
}
37+
}

src/Languages/Php/PhpLanguage.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Tempest\Highlight\Languages\Php\Injections\PhpFunctionParametersInjection;
1212
use Tempest\Highlight\Languages\Php\Injections\PhpHeredocInjection;
1313
use Tempest\Highlight\Languages\Php\Patterns\AttributeTypePattern;
14+
use Tempest\Highlight\Languages\Php\Patterns\CastPattern;
1415
use Tempest\Highlight\Languages\Php\Patterns\CatchTypePattern;
1516
use Tempest\Highlight\Languages\Php\Patterns\ClassNamePattern;
1617
use Tempest\Highlight\Languages\Php\Patterns\ClassPropertyPattern;
@@ -81,6 +82,8 @@ public function getPatterns(): array
8182
return [
8283
...parent::getPatterns(),
8384

85+
new CastPattern(),
86+
8487
new PhpOpenTagPattern(),
8588
new PhpCloseTagPattern(),
8689
new UseFunctionNamePattern(),

tests/Languages/Php/PhpLanguageTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ public function info(
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>) {'],
142142
['Tempest\Http\GenericRouter::Tempest\Http\{closure}()', '<span class="hl-type">Tempest\Http\GenericRouter</span>::<span class="hl-property">Tempest\Http\{closure}</span>()'],
143+
['(string) $bar;(int) $bar;(integer) $bar;(void) $bar;(bool) $bar;(boolean) $bar;(float) $bar;(double) $bar;(real) $bar;(binary) $bar;(array) $bar;;(object) $bar;(unset) $bar;', '(<span class="hl-type">string</span>) <span class="hl-variable">$bar</span>;(<span class="hl-type">int</span>) <span class="hl-variable">$bar</span>;(<span class="hl-type">integer</span>) <span class="hl-variable">$bar</span>;(<span class="hl-type">void</span>) <span class="hl-variable">$bar</span>;(<span class="hl-type">bool</span>) <span class="hl-variable">$bar</span>;(<span class="hl-type">boolean</span>) <span class="hl-variable">$bar</span>;(<span class="hl-type">float</span>) <span class="hl-variable">$bar</span>;(<span class="hl-type">double</span>) <span class="hl-variable">$bar</span>;(<span class="hl-type">real</span>) <span class="hl-variable">$bar</span>;(<span class="hl-type">binary</span>) <span class="hl-variable">$bar</span>;(<span class="hl-type">array</span>) <span class="hl-variable">$bar</span>;;(<span class="hl-type">object</span>) <span class="hl-variable">$bar</span>;(<span class="hl-type">unset</span>) <span class="hl-variable">$bar</span>;'],
143144
];
144145
}
145146
}

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-
function () use ($request) {
2+
(string) $bar;(int) $bar;(integer) $bar;(void) $bar;(bool) $bar;(boolean) $bar;(float) $bar;(double) $bar;(real) $bar;(binary) $bar;(array) $bar;;(object) $bar;(unset) $bar;
33
```

0 commit comments

Comments
 (0)