AbstractSyntaxHighlighterTwigExtension   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 97
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 6
eloc 37
dl 0
loc 97
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A syntaxHighlighterContent() 0 10 1
A syntaxHighlighterStrings() 0 15 1
A syntaxHighlighterDefaults() 0 16 1
A syntaxHighlighterConfig() 0 13 2
A __construct() 0 2 1
1
<?php
2
3
/*
4
 * This file is part of the core-bundle package.
5
 *
6
 * (c) 2018 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\CoreBundle\Twig\Extension\Assets;
13
14
use Twig\Environment;
15
use WBW\Bundle\CoreBundle\Assets\SyntaxHighlighter\SyntaxHighlighterConfig;
16
use WBW\Bundle\CoreBundle\Assets\SyntaxHighlighter\SyntaxHighlighterDefaults;
17
use WBW\Bundle\CoreBundle\Assets\SyntaxHighlighter\SyntaxHighlighterStrings;
18
use WBW\Bundle\CoreBundle\Twig\Extension\AbstractTwigExtension;
19
use WBW\Library\Types\Helper\StringHelper;
20
21
/**
22
 * Abstract SyntaxHighlighter Twig extension.
23
 *
24
 * @author webeweb <https://github.com/webeweb>
25
 * @package WBW\Bundle\CoreBundle\Twig\Extension\Assets
26
 * @abstract
27
 */
28
abstract class AbstractSyntaxHighlighterTwigExtension extends AbstractTwigExtension {
29
30
    /**
31
     * Constructor.
32
     *
33
     * @param Environment $twigEnvironment The Twig environment.
34
     */
35
    public function __construct(Environment $twigEnvironment) {
36
        parent::__construct($twigEnvironment);
37
    }
38
39
    /**
40
     * Display a SyntaxHighlighter config.
41
     *
42
     * @param SyntaxHighlighterConfig $config The configuration.
43
     * @return string Returns the SyntaxHighlighter config.
44
     */
45
    protected function syntaxHighlighterConfig(SyntaxHighlighterConfig $config): string {
46
47
        $template = [
48
            "SyntaxHighlighter.config.bloggerMode = " . StringHelper::parseBoolean($config->getBloggerMode()) . ";",
49
            "SyntaxHighlighter.config.stripBrs = " . StringHelper::parseBoolean($config->getStripBrs()) . ";",
50
            'SyntaxHighlighter.config.tagName = "' . $config->getTagName() . '";',
51
        ];
52
53
        if (null !== $config->getStrings()) {
54
            $template[] = $this->syntaxHighlighterStrings($config->getStrings());
55
        }
56
57
        return implode("\n", $template);
58
    }
59
60
    /**
61
     * Display a SyntaxHighlighter content.
62
     *
63
     * @param string $tag The tag.
64
     * @param string $language The language.
65
     * @param string $content The content.
66
     * @return string Returns the SyntaxHightlighter content.
67
     */
68
    protected function syntaxHighlighterContent(string $tag, string $language, string $content): string {
69
70
        $attributes = [
71
            "class" => [
72
                "brush:",
73
                $language,
74
            ],
75
        ];
76
77
        return static::coreHtmlElement($tag, implode("", ["\n", htmlentities($content), "\n"]), $attributes);
78
    }
79
80
    /**
81
     * Display a SyntaxHighlighter defaults.
82
     *
83
     * @param SyntaxHighlighterDefaults $defaults The defaults.
84
     * @return string Returns the SyntaxHighlighter defaults.
85
     */
86
    protected function syntaxHighlighterDefaults(SyntaxHighlighterDefaults $defaults): string {
87
88
        $template = [
89
            "SyntaxHighlighter.defaults['auto-links'] = " . StringHelper::parseBoolean($defaults->getAutoLinks()) . ";",
90
            'SyntaxHighlighter.defaults[\'class-name\'] = "' . $defaults->getClassName() . '";',
91
            "SyntaxHighlighter.defaults['collapse'] = " . StringHelper::parseBoolean($defaults->getCollapse()) . ";",
92
            "SyntaxHighlighter.defaults['first-line'] = " . $defaults->getFirstLine() . ";",
93
            "SyntaxHighlighter.defaults['gutter'] = " . StringHelper::parseBoolean($defaults->getGutter()) . ";",
94
            "SyntaxHighlighter.defaults['highlight'] = [" . implode(",", $defaults->getHighlight()) . "];",
95
            "SyntaxHighlighter.defaults['html-script'] = " . StringHelper::parseBoolean($defaults->getHtmlScript()) . ";",
96
            "SyntaxHighlighter.defaults['smart-tabs'] = " . StringHelper::parseBoolean($defaults->getSmartTabs()) . ";",
97
            "SyntaxHighlighter.defaults['tab-size'] = " . $defaults->getTabSize() . ";",
98
            "SyntaxHighlighter.defaults['toolbar'] = " . StringHelper::parseBoolean($defaults->getToolbar()) . ";",
99
        ];
100
101
        return implode("\n", $template);
102
    }
103
104
    /**
105
     * Display a SyntaxHighlighter strings.
106
     *
107
     * @param SyntaxHighlighterStrings $strings The strings.
108
     * @return string Returns the SyntaxHighlighter strings.
109
     */
110
    protected function syntaxHighlighterStrings(SyntaxHighlighterStrings $strings): string {
111
112
        $template = [
113
            'SyntaxHighlighter.config.strings.alert = "' . $strings->getAlert() . '";',
114
            'SyntaxHighlighter.config.strings.brushNotHtmlScript = "' . $strings->getBrushNotHtmlScript() . '";',
115
            'SyntaxHighlighter.config.strings.copyToClipboard = "' . $strings->getCopyToClipboard() . '";',
116
            'SyntaxHighlighter.config.strings.copyToClipboardConfirmation = "' . $strings->getCopyToClipboardConfirmation() . '";',
117
            'SyntaxHighlighter.config.strings.expandSource = "' . $strings->getExpandSource() . '";',
118
            'SyntaxHighlighter.config.strings.help = "' . $strings->getHelp() . '";',
119
            'SyntaxHighlighter.config.strings.noBrush = "' . $strings->getNoBrush() . '";',
120
            'SyntaxHighlighter.config.strings.print = "' . $strings->getPrint() . '";',
121
            'SyntaxHighlighter.config.strings.viewSource = "' . $strings->getViewSource() . '";',
122
        ];
123
124
        return implode("\n", $template);
125
    }
126
}
127