Psr0NameInflector::inflectToRelativePath()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.9
c 0
b 0
f 0
cc 3
nc 2
nop 3
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 Psr0NameInflector implements NameInflector
9
{
10
    public function inflectToRelativePath(string $prefix, ClassName $className, string $mappedPath): FilePath
11
    {
12
        if (substr($prefix, -1) === '_' && $className->beginsWith($prefix)) {
13
            $elements = explode('_', $className);
14
            $className = implode('\\', $elements);
15
        }
16
17
        $relativePath = str_replace('\\', '/', (string) $className).'.php';
18
19
        return FilePath::fromParts([$mappedPath, $relativePath]);
20
    }
21
22
    public function inflectToClassName(FilePath $filePath, string $pathPrefix, string $classPrefix): ClassName
23
    {
24
        $className = substr($filePath, strlen($pathPrefix) + 1);
25
        $className = str_replace('/', '\\', $className);
26
        $className = preg_replace('{\.(.+)$}', '', $className);
27
28
        return ClassName::fromString($className);
29
    }
30
}
31