TwigExcelExtension::getFunctions()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace MewesK\TwigExcelBundle\Twig;
4
5
use MewesK\TwigExcelBundle\Twig\NodeVisitor\SyntaxCheckNodeVisitor;
6
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsBlockTokenParser;
7
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsCellTokenParser;
8
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsCenterTokenParser;
9
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsDocumentTokenParser;
10
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsDrawingTokenParser;
11
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsFooterTokenParser;
12
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsHeaderTokenParser;
13
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsIncludeTokenParser;
14
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsLeftTokenParser;
15
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsMacroTokenParser;
16
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsRightTokenParser;
17
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsRowTokenParser;
18
use MewesK\TwigExcelBundle\Twig\TokenParser\XlsSheetTokenParser;
19
use Twig_Error_Runtime;
20
use Twig_Extension;
21
use Twig_SimpleFunction;
22
23
/**
24
 * Class TwigExcelExtension
25
 *
26
 * @package MewesK\TwigExcelBundle\Twig
27
 */
28
class TwigExcelExtension extends Twig_Extension
29
{
30
    /**
31
     * @var bool
32
     */
33
    private $preCalculateFormulas;
34
    /**
35
     * @var null|string
36
     */
37
    private $diskCachingDirectory;
38
39
    /**
40
     * @param bool $preCalculateFormulas
41
     * @param null|string $diskCachingDirectory
42
     */
43
    public function __construct($preCalculateFormulas = true, $diskCachingDirectory = null)
44
    {
45
        $this->preCalculateFormulas = $preCalculateFormulas;
46
        $this->diskCachingDirectory = $diskCachingDirectory;
47
    }
48
49
    /**
50
     * {@inheritdoc}
51
     */
52
    public function getFunctions()
53
    {
54
        return [new Twig_SimpleFunction('xlsmergestyles', [$this, 'mergeStyles'])];
55
    }
56
57
    /**
58
     * {@inheritdoc}
59
     */
60
    public function getTokenParsers()
61
    {
62
        return [
63
            new XlsBlockTokenParser(),
64
            new XlsCellTokenParser(),
65
            new XlsCenterTokenParser(),
66
            new XlsDocumentTokenParser($this->preCalculateFormulas, $this->diskCachingDirectory),
67
            new XlsDrawingTokenParser(),
68
            new XlsFooterTokenParser(),
69
            new XlsHeaderTokenParser(),
70
            new XlsIncludeTokenParser(),
71
            new XlsLeftTokenParser(),
72
            new XlsMacroTokenParser(),
73
            new XlsRightTokenParser(),
74
            new XlsRowTokenParser(),
75
            new XlsSheetTokenParser()
76
        ];
77
    }
78
79
    /**
80
     * {@inheritdoc}
81
     */
82
    public function getNodeVisitors()
83
    {
84
        return [
85
            new SyntaxCheckNodeVisitor()
86
        ];
87
    }
88
89
    /**
90
     * {@inheritdoc}
91
     */
92
    public function getName()
93
    {
94
        return 'excel_extension';
95
    }
96
97
    /**
98
     * @param array $style1
99
     * @param array $style2
100
     *
101
     * @return array
102
     * @throws Twig_Error_Runtime
103
     */
104
    public function mergeStyles(array $style1, array $style2)
105
    {
106
        if (!is_array($style1) || !is_array($style2)) {
107
            throw new Twig_Error_Runtime('The xlsmergestyles function only works with arrays.');
108
        }
109
110
        return array_merge_recursive($style1, $style2);
111
    }
112
} 
113