Skip to content

Commit 530981b

Browse files
committed
Add support to allow partial use rules per namespace
1 parent d3e1e43 commit 530981b

12 files changed

Lines changed: 690 additions & 188 deletions

SlevomatCodingStandard/Helpers/NamespaceHelper.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313
use function implode;
1414
use function ltrim;
1515
use function min;
16+
use function preg_match;
1617
use function sprintf;
1718
use function strcasecmp;
1819
use function strcmp;
1920
use function strpos;
21+
use function trim;
2022
use const T_NAME_FULLY_QUALIFIED;
2123
use const T_NAMESPACE;
2224
use const T_NS_SEPARATOR;
@@ -148,6 +150,33 @@ public static function normalizeToCanonicalName(string $fullyQualifiedName): str
148150
return ltrim($fullyQualifiedName, self::NAMESPACE_SEPARATOR);
149151
}
150152

153+
/**
154+
* @return array{namespace: string, alias: string}
155+
*/
156+
public static function parseNamespaceWithAlias(string $namespaceOrAlias): array
157+
{
158+
$namespaceOrAlias = trim($namespaceOrAlias);
159+
160+
if ($namespaceOrAlias === '') {
161+
return [
162+
'namespace' => '',
163+
'alias' => '',
164+
];
165+
}
166+
167+
$namespace = $namespaceOrAlias;
168+
$alias = '';
169+
if (preg_match('~^(.+?)\s+as\s+(.+)$~i', $namespaceOrAlias, $matches) === 1) {
170+
$namespace = trim($matches[1]);
171+
$alias = trim($matches[2]);
172+
}
173+
174+
return [
175+
'namespace' => $namespace,
176+
'alias' => $alias,
177+
];
178+
}
179+
151180
public static function isTypeInNamespace(string $typeName, string $namespace): bool
152181
{
153182
return StringHelper::startsWith(

0 commit comments

Comments
 (0)