Name::removeArraySuffix()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php declare(strict_types=1);
2
/**
3
 * This source file is subject to the license that is bundled with this package in the file LICENSE.
4
 */
5
6
namespace PhUml\Code;
7
8
use Stringable;
9
use Webmozart\Assert\Assert;
0 ignored issues
show
Bug introduced by
The type Webmozart\Assert\Assert was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
10
11
final class Name implements Stringable
12
{
13
    /** @var string[]  */
14
    private readonly array $parts;
15
16 215
    public function __construct(string $name)
17
    {
18 215
        Assert::notEmpty(trim($name), 'Definition name cannot be null or empty');
19 214
        $this->parts = explode('\\', trim($name));
0 ignored issues
show
Bug introduced by
The property parts is declared read-only in PhUml\Code\Name.
Loading history...
20
    }
21
22 25
    public function first(): string
23
    {
24 25
        return $this->parts[0];
25
    }
26
27 139
    public function fullName(): string
28
    {
29 139
        return implode('\\', $this->parts);
30
    }
31
32 29
    public function isArray(): bool
33
    {
34 29
        return str_ends_with((string) $this, '[]');
35
    }
36
37 34
    public function removeArraySuffix(): string
38
    {
39 34
        return str_replace(search: '[]', replace: '', subject: $this->fullName());
40
    }
41
42 132
    public function __toString(): string
43
    {
44 132
        return $this->parts[count($this->parts) - 1];
45
    }
46
47 2
    public function packageName(): string
48
    {
49 2
        $package = array_slice($this->parts, 0, -1);
50 2
        return implode('\\', $package);
51
    }
52
}
53