• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eliashaeussler / gitattributes / 11573362694

29 Oct 2024 11:59AM UTC coverage: 25.0%. First build
11573362694

push

github

eliashaeussler
Initial commit

35 of 140 new or added lines in 9 files covered. (25.0%)

35 of 140 relevant lines covered (25.0%)

1.31 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Entity/FilePattern.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of the Composer package "eliashaeussler/gitattributes".
7
 *
8
 * Copyright (C) 2024 Elias Häußler <elias@haeussler.dev>
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation, either version 3 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22
 */
23

24
namespace EliasHaeussler\Gitattributes\Entity;
25

26
use Stringable;
27
use Symfony\Component\Filesystem\Path;
28
use Symfony\Component\Finder;
29

30
use function fnmatch;
31
use function ltrim;
32

33
/**
34
 * FilePattern.
35
 *
36
 * @author Elias Häußler <elias@haeussler.dev>
37
 * @license GPL-3.0-or-later
38
 */
39
final class FilePattern implements Stringable
40
{
NEW
41
    public function __construct(
×
42
        private readonly string $pattern,
NEW
43
    ) {}
×
44

NEW
45
    public function pattern(): string
×
46
    {
NEW
47
        return $this->pattern;
×
48
    }
49

NEW
50
    public function isGlobal(): bool
×
51
    {
NEW
52
        return !str_starts_with($this->pattern, DIRECTORY_SEPARATOR);
×
53
    }
54

NEW
55
    public function matches(Finder\SplFileInfo $file): bool
×
56
    {
NEW
57
        if ($this->isGlobal()) {
×
NEW
58
            $pattern = Path::join('*', $this->pattern);
×
59
        } else {
NEW
60
            $pattern = ltrim($this->pattern, DIRECTORY_SEPARATOR);
×
61
        }
62

NEW
63
        return fnmatch($pattern, $file->getRelativePathname());
×
64
    }
65

NEW
66
    public function toString(): string
×
67
    {
NEW
68
        return $this->pattern;
×
69
    }
70

NEW
71
    public function __toString(): string
×
72
    {
NEW
73
        return $this->toString();
×
74
    }
75
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc