Upgraded drupal core with security updates
[yaffs-website] / vendor / psy / psysh / src / Psy / TabCompletion / Matcher / ConstantsMatcher.php
1 <?php
2
3 /*
4  * This file is part of Psy Shell.
5  *
6  * (c) 2012-2017 Justin Hileman
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 Psy\TabCompletion\Matcher;
13
14 /**
15  * A constant name tab completion Matcher.
16  *
17  * This matcher provides completion for all defined constants.
18  *
19  * @author Marc Garcia <markcial@gmail.com>
20  */
21 class ConstantsMatcher extends AbstractMatcher
22 {
23     /**
24      * {@inheritdoc}
25      */
26     public function getMatches(array $tokens, array $info = array())
27     {
28         $const = $this->getInput($tokens);
29
30         return array_filter(array_keys(get_defined_constants()), function ($constant) use ($const) {
31             return AbstractMatcher::startsWith($const, $constant);
32         });
33     }
34
35     /**
36      * {@inheritdoc}
37      */
38     public function hasMatched(array $tokens)
39     {
40         $token = array_pop($tokens);
41         $prevToken = array_pop($tokens);
42
43         switch (true) {
44             case self::tokenIs($prevToken, self::T_NEW):
45             case self::tokenIs($prevToken, self::T_NS_SEPARATOR):
46                 return false;
47             case self::hasToken(array(self::T_OPEN_TAG, self::T_STRING), $token):
48             case self::isOperator($token):
49                 return true;
50         }
51
52         return false;
53     }
54 }