ConcatWs   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
c 1
b 0
f 0
lcom 1
cbo 3
dl 0
loc 34
ccs 17
cts 17
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A parse() 0 22 2
A getSql() 0 6 1
1
<?php
2
3
namespace Luxifer\DQL\String;
4
5
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
6
use Doctrine\ORM\Query\Lexer;
7
use Doctrine\ORM\Query\Parser;
8
use Doctrine\ORM\Query\SqlWalker;
9
10
/**
11
 * ConcatWsFunction ::= "CONCAT_WS" "(" StringPrimary "," StringPrimary "," StringPrimary ")"
12
 */
13
class ConcatWs extends FunctionNode
14
{
15
    public $strings = array();
16
17 5
    public function parse(Parser $parser)
18
    {
19 5
        $lexer = $parser->getLexer();
20
21 5
        $parser->match(Lexer::T_IDENTIFIER);
22 5
        $parser->match(Lexer::T_OPEN_PARENTHESIS);
23
24 5
        $this->strings[] = $parser->StringPrimary(); // Separator
25 5
        $parser->match(Lexer::T_COMMA);
26
27 5
        $this->strings[] = $parser->StringPrimary();
28 5
        $parser->match(Lexer::T_COMMA);
29
30 4
        $this->strings[] = $parser->StringPrimary();
31
32 4
        while ($lexer->isNextToken(Lexer::T_COMMA)) {
33 2
            $parser->match(Lexer::T_COMMA);
34 2
            $this->strings[] = $parser->StringPrimary();
35
        }
36
37 4
        $parser->match(Lexer::T_CLOSE_PARENTHESIS);
38 4
    }
39
40 4
    public function getSql(SqlWalker $sqlWalker)
41
    {
42 4
        $parts = array_map(array($sqlWalker, 'walkStringPrimary'), $this->strings);
43
44 4
        return sprintf('CONCAT_WS(%s)', implode(', ', $parts));
45
    }
46
}
47