Fixer::fix()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 24
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 3

Importance

Changes 2
Bugs 1 Features 0
Metric Value
cc 3
eloc 15
c 2
b 1
f 0
nc 3
nop 1
dl 0
loc 24
ccs 14
cts 14
cp 1
crap 3
rs 9.7666
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpNsFixer\Fixer;
6
7
use Spatie\Regex\Regex;
8
9
final class Fixer
10
{
11 6
    public function fix(Result $result): bool
12
    {
13 6
        if ($result->isValid()) {
14 2
            return false;
15
        }
16
17 4
        $actualNamespacePattern = '/namespace ' . preg_quote($result->getActual()) . '/';
18
19 4
        if (Regex::matchAll($actualNamespacePattern, $result->getFile()->getContents())->hasMatch()) {
20 3
            $pattern = $actualNamespacePattern;
21 3
            $replacement = 'namespace ' . $result->getExpected();
22
        } else {
23 1
            $pattern = '/<\?php/';
24 1
            $replacement = "<?php\n\nnamespace " . $result->getExpected() . ';';
25
        }
26
27 4
        $content = Regex::replace($pattern, $replacement, $result->getFile()->getContents())->result();
28
29
        $result
30 4
            ->getFile()
31 4
            ->openFile('w')
32 4
            ->fwrite(strval($content));
33
34 4
        return true;
35
    }
36
}
37