Completed
Push — master ( 8a93d3...c82149 )
by Peter
04:18
created

NameNormalizer   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 4
c 2
b 0
f 0
lcom 0
cbo 1
dl 0
loc 42
ccs 13
cts 13
cp 1
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B normalize() 0 31 4
1
<?php
2
3
/**
4
 * This software package is licensed under AGPL, Commercial license.
5
 *
6
 * @package maslosoft/addendum
7
 * @licence AGPL, Commercial
8
 * @copyright Copyright (c) Piotr Masełkowski <[email protected]> (Meta container, further improvements, bugfixes)
9
 * @copyright Copyright (c) Maslosoft (Meta container, further improvements, bugfixes)
10
 * @copyright Copyright (c) Jan Suchal (Original version, builder, parser)
11
 * @link https://maslosoft.com/addendum/ - maslosoft addendum
12
 * @link https://code.google.com/p/addendum/ - original addendum project
13
 */
14
15
namespace Maslosoft\Addendum\Utilities;
16
17
/**
18
 * This class normalize class names into consistent values.
19
 *
20
 * @author Piotr Maselkowski <pmaselkowski at gmail.com>
21
 */
22
class NameNormalizer
23
{
24
25
	/**
26
	 * Normalize class name
27
	 * @param string $className
28
	 * @param bool $trailingSlash
29
	 * @return string
30
	 */
31 57
	public static function normalize(&$className, $trailingSlash = true)
32
	{
33 57
		if ($className === '\\')
34
		{
35 2
			return;
36
		}
37
		$replaces = [
38 57
			'~\\\+~' => '\\',
39
			'~^\\\~' => '',
40
			'~\\\$~' => '',
41
		];
42
43 57
		$className = preg_replace(array_keys($replaces), $replaces, $className);
44 57
		if ($trailingSlash)
45
		{
46 53
			$className = '\\' . $className;
47
		}
48 57
		if (ClassChecker::isAnonymous($className))
49
		{
50
			$patterns = [
51 1
				"~" . DIRECTORY_SEPARATOR . "~",
52 1
				'~[^a-zA-Z0-9-_\.]~'
53
			];
54
			$replacements = [
55 1
				'_',
56
				'_'
57
			];
58 1
			$className = preg_replace($patterns, $replacements, $className);
59
		}
60 57
		return $className;
61
	}
62
63
}
64