DefaultStrategy::executeFor()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 20
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 16
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 20
ccs 16
cts 16
cp 1
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 14
nc 2
nop 1
crap 3
1
<?php
2
3
4
namespace CondParse\ParseStrategy;
5
6
7
use CondParse\TokenParserParameter;
8
9
class DefaultStrategy implements ParseStrategyInterface
10
{
11
12
    /**
13
     * @param TokenParserParameter $parserParameter
14
     * @return bool
15
     */
16 1
    public function shouldExecuteFor(TokenParserParameter $parserParameter)
17
    {
18 1
        return true;
19
    }
20
21
    /**
22
     * @param TokenParserParameter $parserParameter
23
     * @return void
24
     */
25 6
    public function executeFor(TokenParserParameter $parserParameter)
26
    {
27
        while (
28 6
            ! $parserParameter->getOperatorStack()->isEmpty()
29 6
            && $parserParameter->getTokenMap()
30 5
                ->compareOperatorPrecedence(
31 5
                    $parserParameter->getLexerToken(),
32 5
                    $parserParameter->getOperatorStack()->top()
33 5
                ) <= 0
34 6
        ) {
35 4
            $parserParameter->getOperandStack()->push(
36
                $parserParameter
37 4
                    ->getTokenMap()
38 4
                    ->buildOperand($parserParameter->getOperatorStack()->pop())
39 4
                    ->consumeTokens($parserParameter->getOperandStack())
40 4
            );
41 4
        }
42
43 6
        $parserParameter->getOperatorStack()->push($parserParameter->getLexerToken());
44 6
    }
45
}
46