Code Duplication    Length = 7-10 lines in 5 locations

src/Parser/Parser.php 1 location

@@ 38-44 (lines=7) @@
35
36
    abstract public function parse() : Result;
37
38
    protected function parseFWS() : Result
39
    {
40
        $foldingWS = new FoldingWhiteSpace($this->lexer);
41
        $resultFWS = $foldingWS->parse();
42
        $this->warnings = array_merge($this->warnings, $foldingWS->getWarnings());
43
        return $resultFWS;
44
    }
45
46
    protected function checkConsecutiveDots() : Result
47
    {

src/Parser/LocalPart.php 3 locations

@@ 96-105 (lines=10) @@
93
        return new ValidEmail();
94
    }
95
96
    private function parseLocalFWS() : Result 
97
    {
98
        $foldingWS = new FoldingWhiteSpace($this->lexer);
99
        $resultFWS = $foldingWS->parse();
100
        if ($resultFWS->isValid()) {
101
            $this->warnings = array_merge($this->warnings, $foldingWS->getWarnings());
102
        }
103
        return $resultFWS;
104
    }
105
106
    private function hasDotAtStart() : bool
107
    {
108
            return $this->lexer->token['type'] === EmailLexer::S_DOT && null === $this->lexer->getPrevious()['type'];
@@ 111-118 (lines=8) @@
108
            return $this->lexer->token['type'] === EmailLexer::S_DOT && null === $this->lexer->getPrevious()['type'];
109
    }
110
111
    private function parseDoubleQuote() : Result
112
    {
113
        $dquoteParser = new DoubleQuote($this->lexer);
114
        $parseAgain = $dquoteParser->parse();
115
        $this->warnings = array_merge($this->warnings, $dquoteParser->getWarnings());
116
117
        return $parseAgain;
118
    }
119
120
    private function parseComments(): Result
121
    {
@@ 120-129 (lines=10) @@
117
        return $parseAgain;
118
    }
119
120
    private function parseComments(): Result
121
    {
122
        $commentParser = new Comment($this->lexer, new LocalComment());
123
        $result = $commentParser->parse();
124
        $this->warnings = array_merge($this->warnings, $commentParser->getWarnings());
125
        if($result->isInvalid()) {
126
            return $result;
127
        }
128
        return $result;
129
    }
130
131
    private function validateEscaping() : Result
132
    {

src/Parser/DomainPart.php 1 location

@@ 130-137 (lines=8) @@
127
        return $this->domainPart;
128
    }
129
130
    protected function parseComments(): Result
131
    {
132
        $commentParser = new Comment($this->lexer, new DomainComment());
133
        $result = $commentParser->parse();
134
        $this->warnings = array_merge($this->warnings, $commentParser->getWarnings());
135
136
        return $result;
137
    }
138
139
    protected function doParseDomainPart() : Result
140
    {