Completed
Branch master (6cd78a)
by Mewes
04:43 queued 01:43
created

XlsBlockTokenParser::parse()   B

Complexity

Conditions 3
Paths 3

Size

Total Lines 24
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 5
Bugs 1 Features 1
Metric Value
c 5
b 1
f 1
dl 0
loc 24
rs 8.9713
cc 3
eloc 9
nc 3
nop 1
1
<?php
2
3
namespace MewesK\TwigExcelBundle\Twig\TokenParser;
4
5
use MewesK\TwigExcelBundle\Twig\NodeHelper;
6
use Twig_Error_Syntax;
7
use Twig_Node_Block;
8
use Twig_Node_BlockReference;
9
use Twig_Token;
10
use Twig_TokenParser_Block;
11
12
/**
13
 * Class XlsBlockTokenParser
14
 *
15
 * @package MewesK\TwigExcelBundle\Twig\TokenParser
16
 */
17
class XlsBlockTokenParser extends Twig_TokenParser_Block
18
{
19
    /**
20
     * @param Twig_Token $token
21
     * @return Twig_Node_BlockReference
22
     * @throws Twig_Error_Syntax
23
     */
24
    public function parse(Twig_Token $token)
25
    {
26
        /**
27
         * @var Twig_Node_BlockReference $blockReference
28
         */
29
        $blockReference = parent::parse($token);
30
        /**
31
         * @var Twig_Node_Block $block
32
         */
33
        $block = $this->parser->getBlock($blockReference->getAttribute('name'));
34
35
        // prepare block
36
        NodeHelper::removeTextNodesRecursively($block, $this->parser);
37
        NodeHelper::fixMacroCallsRecursively($block);
38
39
        // mark for syntax checks
40
        foreach ($block->getIterator() as $node) {
41
            if ($node instanceof Twig_Node_Block) {
42
                $node->setAttribute('twigExcelBundle', true);
43
            }
44
        }
45
46
        return $blockReference;
47
    }
48
49
    /**
50
     * @param Twig_Token $token
51
     * @return bool
52
     */
53
    public function decideBlockEnd(Twig_Token $token)
54
    {
55
        return $token->test('endxlsblock');
56
    }
57
58
    /**
59
     * @return string
60
     */
61
    public function getTag()
62
    {
63
        return 'xlsblock';
64
    }
65
}
66