Skip to content

Commit af65f04

Browse files
committed
-
Signed-off-by: azjezz <azjezz@protonmail.com>
1 parent 286df69 commit af65f04

3 files changed

Lines changed: 24 additions & 24 deletions

File tree

src/Cache/ApcuCache.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
use Psl;
88
use HackRouting\PrefixMatching\PrefixMap;
9-
use Psl\SecureRandom;
109

1110
/**
1211
* @template TResponder
@@ -27,7 +26,6 @@ public function __construct()
2726
*/
2827
public function get(string $item, callable $callback): array
2928
{
30-
$item = '/hack-routing/' . $item . '/prefix-map';
3129
/** @var false|array<non-empty-string, PrefixMap<TResponder>> $result */
3230
$result = apcu_fetch($item, $success);
3331
if ($success && false !== $result) {

src/PatternParser/tokenize.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44

55
namespace HackRouting\PatternParser;
66

7-
use Psl\Str\Byte;
8-
use Psl\Vec;
7+
use function array_filter;
8+
use function str_split;
99

1010
/**
11-
* @return list<Token>
11+
* @return array<int, Token>
1212
*/
1313
function tokenize(string $pattern): array
1414
{
1515
$tokens = [];
1616
$buffer = '';
17-
foreach (Byte\chunk($pattern) as $byte) {
17+
foreach (str_split($pattern) as $byte) {
1818
if (Token::isValidType($byte)) {
1919
$tokens[] = new Token(Token::TYPE_STRING, $buffer);
2020
$buffer = '';
@@ -28,7 +28,7 @@ function tokenize(string $pattern): array
2828
$tokens[] = new Token(Token::TYPE_STRING, $buffer);
2929
}
3030

31-
return Vec\filter(
31+
return array_filter(
3232
$tokens,
3333
static fn (Token $t): bool => !($t->getType() === Token::TYPE_STRING && $t->getValue() === '')
3434
);

src/Resolver/PrefixMatchingResolver.php

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,12 @@
66

77
use HackRouting\HttpException\NotFoundException;
88
use HackRouting\PrefixMatching\PrefixMap;
9-
10-
use function array_filter;
119
use function array_merge;
10+
use function is_string;
1211
use function preg_match;
1312
use function strlen;
1413
use function substr;
1514

16-
use const ARRAY_FILTER_USE_KEY;
17-
1815
/**
1916
* @template TResponder
2017
*
@@ -50,13 +47,14 @@ public static function fromFlatMap(array $map): PrefixMatchingResolver
5047
/**
5148
* @param array<string, Tr> $flat_map
5249
*/
53-
static fn (array $flat_map): PrefixMap => PrefixMap::fromFlatMap($flat_map),
50+
static fn(array $flat_map): PrefixMap => PrefixMap::fromFlatMap($flat_map),
5451
$map,
5552
));
5653
}
5754

5855
/**
5956
* @param non-empty-string $method
57+
* @param non-empty-string $path
6058
*
6159
* @return array{0: TResponder, array<string, string>}
6260
*
@@ -69,17 +67,20 @@ public function resolve(string $method, string $path): array
6967
throw new NotFoundException();
7068
}
7169

72-
return $this->resolveWithMap($path, $map);
70+
return self::resolveWithMap($path, $map);
7371
}
7472

7573
/**
76-
* @param PrefixMap<TResponder> $map
74+
* @template T
7775
*
78-
* @return array{0: TResponder, array<string, string>}
76+
* @param non-empty-string $path
77+
* @param PrefixMap<T> $map
78+
*
79+
* @return array{0: T, array<string, string>}
7980
*
8081
* @throws NotFoundException
8182
*/
82-
private function resolveWithMap(string $path, PrefixMap $map): array
83+
private static function resolveWithMap($path, $map)
8384
{
8485
if (isset($map->literals[$path])) {
8586
return [$map->literals[$path], []];
@@ -88,7 +89,7 @@ private function resolveWithMap(string $path, PrefixMap $map): array
8889
if ($prefixes = $map->prefixes) {
8990
$prefix = substr($path, 0, $map->getPrefixLength());
9091
if (isset($prefixes[$prefix])) {
91-
return $this->resolveWithMap(
92+
return self::resolveWithMap(
9293
substr($path, $map->prefixLength),
9394
$prefixes[$prefix],
9495
);
@@ -104,18 +105,19 @@ private function resolveWithMap(string $path, PrefixMap $map): array
104105
$remaining = substr($path, strlen($matched));
105106

106107
/** @var array<string, string> $data */
107-
$data = array_filter($matches, 'is_string', ARRAY_FILTER_USE_KEY);
108-
109-
if ($sub->isResponder()) {
110-
if ($remaining === '') {
111-
return [$sub->getResponder(), $data];
108+
$data = [];
109+
foreach ($matches as $name => $match) {
110+
if (is_string($name)) {
111+
$data[$name] = $match;
112112
}
113+
}
113114

114-
continue;
115+
if ($remaining === '') {
116+
return [$sub->getResponder(), $data];
115117
}
116118

117119
try {
118-
[$responder, $sub_data] = $this->resolveWithMap($remaining, $sub->getMap());
120+
[$responder, $sub_data] = self::resolveWithMap($remaining, $sub->getMap());
119121
} catch (NotFoundException) {
120122
continue;
121123
}

0 commit comments

Comments
 (0)