Psr4NameInflector   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 2
dl 0
loc 24
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A inflectToRelativePath() 0 6 1
A inflectToClassName() 0 14 2
1
<?php
2
3
namespace Phpactor\ClassFileConverter\Adapter\Composer;
4
5
use Phpactor\ClassFileConverter\Domain\ClassName;
6
use Phpactor\ClassFileConverter\Domain\FilePath;
7
8
final class Psr4NameInflector implements NameInflector
9
{
10
    public function inflectToRelativePath(string $prefix, ClassName $className, string $mappedPath): FilePath
11
    {
12
        $relativePath = str_replace('\\', '/', substr($className, strlen($prefix))).'.php';
13
14
        return FilePath::fromParts([$mappedPath, $relativePath]);
15
    }
16
17
    public function inflectToClassName(FilePath $filePath, string $pathPrefix, string $classPrefix): ClassName
18
    {
19
        // class prefix is "0" when prefix is "" (fallback) in composer.json
20
        if ('0' == (string) $classPrefix) {
21
            $classPrefix = '';
22
        }
23
24
        $className = substr($filePath, strlen($pathPrefix) + 1);
25
        $className = str_replace('/', '\\', $className);
26
        $className = $classPrefix.$className;
27
        $className = preg_replace('{\.(.+)$}', '', $className);
28
29
        return ClassName::fromString($className);
30
    }
31
}
32