Mercurial > hg > isophonics-drupal-site
comparison vendor/psy/psysh/src/TabCompletion/Matcher/AbstractDefaultParametersMatcher.php @ 13:5fb285c0d0e3
Update Drupal core to 8.4.7 via Composer. Security update; I *think* we've
been lucky to get away with this so far, as we don't support self-registration
which seems to be used by the so-called "drupalgeddon 2" attack that 8.4.5
was vulnerable to.
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:33:26 +0100 |
parents | |
children | 129ea1e6d783 |
comparison
equal
deleted
inserted
replaced
12:7a779792577d | 13:5fb285c0d0e3 |
---|---|
1 <?php | |
2 | |
3 /* | |
4 * This file is part of Psy Shell. | |
5 * | |
6 * (c) 2012-2018 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 abstract class AbstractDefaultParametersMatcher extends AbstractContextAwareMatcher | |
15 { | |
16 /** | |
17 * @param \ReflectionParameter[] $reflectionParameters | |
18 * | |
19 * @return array | |
20 */ | |
21 public function getDefaultParameterCompletion(array $reflectionParameters) | |
22 { | |
23 $parametersProcessed = []; | |
24 | |
25 foreach ($reflectionParameters as $parameter) { | |
26 if (!$parameter->isDefaultValueAvailable()) { | |
27 return []; | |
28 } | |
29 | |
30 $defaultValue = $this->valueToShortString($parameter->getDefaultValue()); | |
31 | |
32 $parametersProcessed[] = "\${$parameter->getName()} = $defaultValue"; | |
33 } | |
34 | |
35 if (empty($parametersProcessed)) { | |
36 return []; | |
37 } | |
38 | |
39 return [implode(', ', $parametersProcessed) . ')']; | |
40 } | |
41 | |
42 /** | |
43 * Takes in the default value of a parameter and turns it into a | |
44 * string representation that fits inline. | |
45 * This is not 100% true to the original (newlines are inlined, for example). | |
46 * | |
47 * @param mixed $value | |
48 * | |
49 * @return string | |
50 */ | |
51 private function valueToShortString($value) | |
52 { | |
53 if (!is_array($value)) { | |
54 return json_encode($value); | |
55 } | |
56 | |
57 $chunks = []; | |
58 $chunksSequential = []; | |
59 | |
60 $allSequential = true; | |
61 | |
62 foreach ($value as $key => $item) { | |
63 $allSequential = $allSequential && is_numeric($key) && $key === count($chunksSequential); | |
64 | |
65 $keyString = $this->valueToShortString($key); | |
66 $itemString = $this->valueToShortString($item); | |
67 | |
68 $chunks[] = "{$keyString} => {$itemString}"; | |
69 $chunksSequential[] = $itemString; | |
70 } | |
71 | |
72 $chunksToImplode = $allSequential ? $chunksSequential : $chunks; | |
73 | |
74 return '[' . implode(', ', $chunksToImplode) . ']'; | |
75 } | |
76 } |