Passed
Push — master ( c34b74...73c062 )
by Björn
13:02
created

File::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 10
c 0
b 0
f 0
ccs 0
cts 0
cp 0
cc 1
nc 1
nop 1
crap 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace BestIt\CodeSniffer;
6
7
use PHP_CodeSniffer\Files\File as BaseFile;
8
use PHP_CodeSniffer\Fixer;
9
use function func_get_args;
10
11
/**
12
 * Class File
13
 *
14
 * Wrapper Class for PhpCsFile to provide a consistent way to replace int|bool returns
15
 * with int returns (false => -1)
16
 * Additionally there could be some architecture changes in the future, like Token-Objects and so on.
17
 *
18
 * @author Nick Lubisch <[email protected]>
19
 * @package BestIt\CodeSniffer
20
 */
21
class File extends AbstractFileDecorator
22
{
23
    /**
24
     * Returns the position of the next specified token(s).
25
     *
26
     * If a value is specified, the next token of the specified type(s)
27
     * containing the specified value will be returned.
28
     *
29
     * Returns false if no token can be found.
30
     *
31
     * @SuppressWarnings(PHPMD.BooleanArgumentFlag)
32
     *
33
     * @param array $types The type(s) of tokens to search for.
34
     * @param int $start The position to start searching from in the token stack.
35
     * @param int|null $end The end position to fail if no token is found. if not specified or null, end will default to the end of the token stack.
36
     * @param bool $exclude If true, find the next token that is NOT of a type specified in $types.
37
     * @param string|null $value The value that the token(s) must be equal to. If value is omitted, tokens with any value will be returned.
38
     * @param bool $local If true, tokens outside the current statement will not be checked. i.e., checking will stop at the next semi-colon found.
39
     *
40
     * @return int Returns the pointer of the token or -1
41
     */
42
    public function findNext(
43
        $types,
44
        $start,
45
        $end = null,
46
        $exclude = false,
47 121
        $value = null,
48
        $local = false
49 121
    ): int {
50 121
        $result = $this->__call(__FUNCTION__, func_get_args());
51 121
52 121
        return $this->harmonizeFindResult($result);
53
    }
54
55
    /**
56
     * Returns the position of the previous specified token(s).
57
     *
58
     * If a value is specified, the previous token of the specified type(s)
59 121
     * containing the specified value will be returned.
60
     *
61 121
     * Returns -1 if no token can be found.
62
     *
63 121
     * @SuppressWarnings(PHPMD.BooleanArgumentFlag)
64 121
     *
65 121
     * @param array $types The type(s) of tokens to search for.
66
     * @param int $start The position to start searching from in the token stack.
67
     * @param int|null $end The end position to fail if no token is found. if not specified or null, end will default to the start of the token stack.
68 121
     * @param bool $exclude If true, find the previous token that are NOT of the types specified in $types.
69
     * @param string|null $value The value that the token(s) must be equal to. If value is omitted, tokens with any value will be returned.
70
     * @param bool $local If true, tokens outside the current statement will not be checked. IE. checking will stop at the previous semi-colon found.
71
     *
72
     * @return int Pointer to the found token
73
     */
74
    public function findPrevious(
75
        $types,
76
        $start,
77
        $end = null,
78
        $exclude = false,
79
        $value = null,
80
        $local = false
81
    ): int {
82
        $pointer = $this->__call(__FUNCTION__, func_get_args());
83 68
84
        return $this->harmonizeFindResult($pointer);
85
    }
86
87
    /**
88
     * Returns the eol char of the file
89
     *
90 68
     * @return string Returns the EndOfLine-Character of the processed file
91
     */
92
    public function getEolChar(): string
93
    {
94
        return $this->getBaseFile()->eolChar;
95
    }
96
97
    /**
98 121
     * Returns the Wrapped PHP_CodeSniffer_Fixer
99
     *
100 121
     * @return Fixer Returns the fixer class.
101
     */
102
    public function getFixer(): Fixer
103
    {
104
        return $this->getBaseFile()->fixer;
105
    }
106
107
    /**
108
     * Returns the token stack for this file.
109
     *
110
     * @return array Return array of token data
111
     */
112
    public function getTokens(): array
113
    {
114
        return $this->tokens;
115
    }
116
117
    /**
118
     * Returns an integer even if the search in the code sniffer file returns a bool.
119
     *
120
     * @param int|bool $searchResult Pointer of a token or false.
121
     *
122
     * @return int The real Pointer or -1 when not found.
123
     */
124
    public function harmonizeFindResult($searchResult): int
125 121
    {
126
        return $searchResult !== false ? $searchResult : -1;
127
    }
128
}
129