PHP 8.3.31
Preview: AbstractDefaultParametersMatcher.php Size: 2.02 KB
/home/getspomw/royalsquad.us/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractDefaultParametersMatcher.php

<?php

/*
 * This file is part of Psy Shell.
 *
 * (c) 2012-2023 Justin Hileman
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Psy\TabCompletion\Matcher;

abstract class AbstractDefaultParametersMatcher extends AbstractContextAwareMatcher
{
    /**
     * @param \ReflectionParameter[] $reflectionParameters
     *
     * @return array
     */
    public function getDefaultParameterCompletion(array $reflectionParameters): array
    {
        $parametersProcessed = [];

        foreach ($reflectionParameters as $parameter) {
            if (!$parameter->isDefaultValueAvailable()) {
                return [];
            }

            $defaultValue = $this->valueToShortString($parameter->getDefaultValue());

            $parametersProcessed[] = \sprintf('$%s = %s', $parameter->getName(), $defaultValue);
        }

        if (empty($parametersProcessed)) {
            return [];
        }

        return [\implode(', ', $parametersProcessed).')'];
    }

    /**
     * Takes in the default value of a parameter and turns it into a
     *  string representation that fits inline.
     * This is not 100% true to the original (newlines are inlined, for example).
     *
     * @param mixed $value
     */
    private function valueToShortString($value): string
    {
        if (!\is_array($value)) {
            return \json_encode($value);
        }

        $chunks = [];
        $chunksSequential = [];

        $allSequential = true;

        foreach ($value as $key => $item) {
            $allSequential = $allSequential && \is_numeric($key) && $key === \count($chunksSequential);

            $keyString = $this->valueToShortString($key);
            $itemString = $this->valueToShortString($item);

            $chunks[] = "{$keyString} => {$itemString}";
            $chunksSequential[] = $itemString;
        }

        $chunksToImplode = $allSequential ? $chunksSequential : $chunks;

        return '['.\implode(', ', $chunksToImplode).']';
    }
}

Directory Contents

Dirs: 0 × Files: 18

Name Size Perms Modified Actions
1.31 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
2.02 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
4.82 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
2.20 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
1.61 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
2.19 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
2.38 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
2.44 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
1.33 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
1.20 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
1.38 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
2.04 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
1.76 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
1.64 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
1.89 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
1.75 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
2.03 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download
1.23 KB lrw-rw-rw- 2025-09-17 06:53:37
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).