SyntaxHighlighterTwigExtension   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 104
Duplicated Lines 0 %

Importance

Changes 18
Bugs 0 Features 0
Metric Value
eloc 27
c 18
b 0
f 0
dl 0
loc 104
rs 10
wmc 8

7 Methods

Rating   Name   Duplication   Size   Complexity  
A syntaxHighlighterStringsFunction() 0 2 1
A syntaxHighlighterContentFunction() 0 12 2
A getFunctions() 0 16 1
A syntaxHighlighterConfigFunction() 0 2 1
A syntaxHighlighterDefaultsFunction() 0 2 1
A getFilters() 0 4 1
A syntaxHighlighterScriptFilter() 0 2 1
1
<?php
2
3
/*
4
 * This file is part of the syntaxhighlighter-bundle package.
5
 *
6
 * (c) 2017 WEBEWEB
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace WBW\Bundle\SyntaxHighlighterBundle\Twig\Extension;
13
14
use Twig\TwigFilter;
15
use Twig\TwigFunction;
16
use WBW\Bundle\SyntaxHighlighterBundle\API\SyntaxHighlighterConfig;
17
use WBW\Bundle\SyntaxHighlighterBundle\API\SyntaxHighlighterDefaults;
18
use WBW\Bundle\SyntaxHighlighterBundle\API\SyntaxHighlighterStrings;
19
use WBW\Library\Core\Argument\ArrayHelper;
20
use WBW\Library\Core\Exception\FileSystem\FileNotFoundException;
21
use WBW\Library\Core\FileSystem\FileHelper;
22
23
/**
24
 * SyntaxHighlighter Twig extension.
25
 *
26
 * @author webeweb <https://github.com/webeweb/>
27
 * @package WBW\Bundle\SyntaxHighlighterBundle\Twig\Extension
28
 */
29
class SyntaxHighlighterTwigExtension extends AbstractSyntaxHighlighterTwigExtension {
30
31
    /**
32
     * Service name.
33
     *
34
     * @var string
35
     */
36
    const SERVICE_NAME = "wbw.syntaxhighlighter.twig.extension.syntaxhighlighter";
37
38
    /**
39
     * Get the Twig filters.
40
     *
41
     * @return TwigFilter[] Returns the Twig filters.
42
     */
43
    public function getFilters() {
44
        return [
45
            new TwigFilter("syntaxHighlighterScript", [$this, "syntaxHighlighterScriptFilter"], ["is_safe" => ["html"]]),
46
            new TwigFilter("shScript", [$this, "syntaxHighlighterScriptFilter"], ["is_safe" => ["html"]]),
47
        ];
48
    }
49
50
    /**
51
     * Get the Twig functions.
52
     *
53
     * @return TwigFunction[] Returns the Twig functions.
54
     */
55
    public function getFunctions() {
56
        return [
57
            new TwigFunction("syntaxHighlighterConfig", [$this, "syntaxHighlighterConfigFunction"], ["is_safe" => ["html"]]),
58
            new TwigFunction("shConfig", [$this, "syntaxHighlighterConfigFunction"], ["is_safe" => ["html"]]),
59
60
            new TwigFunction("syntaxHighlighterContent", [$this, "syntaxHighlighterContentFunction"], ["is_safe" => ["html"]]),
61
            new TwigFunction("shContent", [$this, "syntaxHighlighterContentFunction"], ["is_safe" => ["html"]]),
62
63
            new TwigFunction("syntaxHighlighterDefaults", [$this, "syntaxHighlighterDefaultsFunction"], ["is_safe" => ["html"]]),
64
            new TwigFunction("shDefaults", [$this, "syntaxHighlighterDefaultsFunction"], ["is_safe" => ["html"]]),
65
66
            new TwigFunction("syntaxHighlighterScript", [$this, "syntaxHighlighterScriptFilter"], ["is_safe" => ["html"]]),
67
            new TwigFunction("shScript", [$this, "syntaxHighlighterScriptFilter"], ["is_safe" => ["html"]]),
68
69
            new TwigFunction("syntaxHighlighterStrings", [$this, "syntaxHighlighterStringsFunction"], ["is_safe" => ["html"]]),
70
            new TwigFunction("shStrings", [$this, "syntaxHighlighterStringsFunction"], ["is_safe" => ["html"]]),
71
        ];
72
    }
73
74
    /**
75
     * Displays a SyntaxHighlighter config.
76
     *
77
     * @param SyntaxHighlighterConfig $config The SyntaxHighlighter config.
78
     * @return string Returns the SyntaxHighlighter config.
79
     */
80
    public function syntaxHighlighterConfigFunction(SyntaxHighlighterConfig $config) {
81
        return $this->syntaxHighlighterConfig($config);
82
    }
83
84
    /**
85
     * Displays a SyntaxHighlighter content.
86
     *
87
     * @param array $args The arguments.
88
     * @return string Returns the SyntaxHighlighter content.
89
     * @throws FileNotFoundException Throws a file not found exception if the file does not exists.
90
     */
91
    public function syntaxHighlighterContentFunction(array $args = []) {
92
93
        $tag      = ArrayHelper::get($args, "tag", "pre");
94
        $language = ArrayHelper::get($args, "language", "php");
95
        $filename = ArrayHelper::get($args, "filename");
96
        $content  = ArrayHelper::get($args, "content");
97
98
        if (null !== $filename) {
99
            $content = FileHelper::getContents($filename);
100
        }
101
102
        return $this->syntaxHighlighterContent($tag, $language, $content);
103
    }
104
105
    /**
106
     * Displays a SyntaxHighlighter defaults.
107
     *
108
     * @param SyntaxHighlighterDefaults $defaults The SyntaxHighlighter defaults.
109
     * @return string Returns the SyntaxHighlighter defaults.
110
     */
111
    public function syntaxHighlighterDefaultsFunction(SyntaxHighlighterDefaults $defaults) {
112
        return $this->syntaxHighlighterDefaults($defaults);
113
    }
114
115
    /**
116
     * Displays a SyntaxHighlighter script.
117
     *
118
     * @param string $content The content.
119
     * @return string Returns the SyntaxHighlighter script.
120
     */
121
    public function syntaxHighlighterScriptFilter($content) {
122
        return static::coreHTMLElement("script", "\n" . $content . "\n", ["type" => "text/javascript"]);
123
    }
124
125
    /**
126
     * Displays a SyntaxHighlighter strings.
127
     *
128
     * @param SyntaxHighlighterStrings $strings The SyntaxHighlighter strings.
129
     * @return string Returns the SyntaxHighlighter strings.
130
     */
131
    public function syntaxHighlighterStringsFunction(SyntaxHighlighterStrings $strings) {
132
        return $this->syntaxHighlighterStrings($strings);
133
    }
134
}
135