1<?php
2
3/*
4 * This file is part of Twig.
5 *
6 * (c) Fabien Potencier
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Twig;
13
14/**
15 * Default autoescaping strategy based on file names.
16 *
17 * This strategy sets the HTML as the default autoescaping strategy,
18 * but changes it based on the template name.
19 *
20 * Note that there is no runtime performance impact as the
21 * default autoescaping strategy is set at compilation time.
22 *
23 * @author Fabien Potencier <fabien@symfony.com>
24 */
25class FileExtensionEscapingStrategy
26{
27    /**
28     * Guesses the best autoescaping strategy based on the file name.
29     *
30     * @param string $name The template name
31     *
32     * @return string|false The escaping strategy name to use or false to disable
33     */
34    public static function guess($name)
35    {
36        if (\in_array(substr($name, -1), ['/', '\\'])) {
37            return 'html'; // return html for directories
38        }
39
40        if ('.twig' === substr($name, -5)) {
41            $name = substr($name, 0, -5);
42        }
43
44        $extension = pathinfo($name, \PATHINFO_EXTENSION);
45
46        switch ($extension) {
47            case 'js':
48                return 'js';
49
50            case 'css':
51                return 'css';
52
53            case 'txt':
54                return false;
55
56            default:
57                return 'html';
58        }
59    }
60}
61
62class_alias('Twig\FileExtensionEscapingStrategy', 'Twig_FileExtensionEscapingStrategy');
63