9d09f2179301af2b048a0fdb79730e69bf12b0cb
[yaffs-website] / vendor / twig / twig / lib / Twig / Error / Syntax.php
1 <?php
2
3 /*
4  * This file is part of Twig.
5  *
6  * (c) Fabien Potencier
7  * (c) Armin Ronacher
8  *
9  * For the full copyright and license information, please view the LICENSE
10  * file that was distributed with this source code.
11  */
12
13 /**
14  * Exception thrown when a syntax error occurs during lexing or parsing of a template.
15  *
16  * @author Fabien Potencier <fabien@symfony.com>
17  */
18 class Twig_Error_Syntax extends Twig_Error
19 {
20     /**
21      * Tweaks the error message to include suggestions.
22      *
23      * @param string $name  The original name of the item that does not exist
24      * @param array  $items An array of possible items
25      */
26     public function addSuggestions($name, array $items)
27     {
28         if (!$alternatives = self::computeAlternatives($name, $items)) {
29             return;
30         }
31
32         $this->appendMessage(sprintf(' Did you mean "%s"?', implode('", "', $alternatives)));
33     }
34
35     /**
36      * @internal
37      *
38      * To be merged with the addSuggestions() method in 2.0.
39      */
40     public static function computeAlternatives($name, $items)
41     {
42         $alternatives = array();
43         foreach ($items as $item) {
44             $lev = levenshtein($name, $item);
45             if ($lev <= strlen($name) / 3 || false !== strpos($item, $name)) {
46                 $alternatives[$item] = $lev;
47             }
48         }
49         asort($alternatives);
50
51         return array_keys($alternatives);
52     }
53 }
54
55 class_alias('Twig_Error_Syntax', 'Twig\Error\SyntaxError', false);