Completed
Push — master ( 7d8097...8a93d3 )
by Peter
06:00 queued 01:01
created

NameNormalizer   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 71.43%

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 15
cts 21
cp 0.7143
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 56
	public static function normalize(&$className, $trailingSlash = true)
32
	{
33 56
		if ($className === '\\')
34 56
		{
35 2
			return;
36
		}
37
		$replaces = [
38 56
			'~\\\+~' => '\\',
39 56
			'~^\\\~' => '',
40 56
			'~\\\$~' => '',
41 56
		];
42
43 56
		$className = preg_replace(array_keys($replaces), $replaces, $className);
44
		if ($trailingSlash)
45 56
		{
46 52
			$className = '\\' . $className;
47 52
		}
48 56
		if (ClassChecker::isAnonymous($className))
49 56
		{
50
			$patterns = [
51
				"~" . DIRECTORY_SEPARATOR . "~",
52
				'~[^a-zA-Z0-9-_\.]~'
53
			];
54
			$replacements = [
55
				'_',
56
				'_'
57
			];
58
			$className = preg_replace($patterns, $replacements, $className);
59
		}
60 56
		return $className;
61
	}
62
63
}
64