X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fpsy%2Fpsysh%2Fsrc%2FVarDumper%2FPresenter.php;fp=vendor%2Fpsy%2Fpsysh%2Fsrc%2FVarDumper%2FPresenter.php;h=400778ab244bb6f89993bd815f85fad68dd0e22b;hp=0000000000000000000000000000000000000000;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0 diff --git a/vendor/psy/psysh/src/VarDumper/Presenter.php b/vendor/psy/psysh/src/VarDumper/Presenter.php new file mode 100644 index 000000000..400778ab2 --- /dev/null +++ b/vendor/psy/psysh/src/VarDumper/Presenter.php @@ -0,0 +1,137 @@ + 'number', + 'const' => 'const', + 'str' => 'string', + 'cchr' => 'default', + 'note' => 'class', + 'ref' => 'default', + 'public' => 'public', + 'protected' => 'protected', + 'private' => 'private', + 'meta' => 'comment', + 'key' => 'comment', + 'index' => 'number', + ]; + + public function __construct(OutputFormatter $formatter, $forceArrayIndexes = false) + { + // Work around https://github.com/symfony/symfony/issues/23572 + $oldLocale = setlocale(LC_NUMERIC, 0); + setlocale(LC_NUMERIC, 'C'); + + $this->dumper = new Dumper($formatter, $forceArrayIndexes); + $this->dumper->setStyles($this->styles); + + // Now put the locale back + setlocale(LC_NUMERIC, $oldLocale); + + $this->cloner = new Cloner(); + $this->cloner->addCasters(['*' => function ($obj, array $a, Stub $stub, $isNested, $filter = 0) { + if ($filter || $isNested) { + if ($obj instanceof \Exception) { + $a = Caster::filter($a, Caster::EXCLUDE_NOT_IMPORTANT | Caster::EXCLUDE_EMPTY, $this->exceptionsImportants); + } else { + $a = Caster::filter($a, Caster::EXCLUDE_PROTECTED | Caster::EXCLUDE_PRIVATE); + } + } + + return $a; + }]); + } + + /** + * Register casters. + * + * @see http://symfony.com/doc/current/components/var_dumper/advanced.html#casters + * + * @param callable[] $casters A map of casters + */ + public function addCasters(array $casters) + { + $this->cloner->addCasters($casters); + } + + /** + * Present a reference to the value. + * + * @param mixed $value + * + * @return string + */ + public function presentRef($value) + { + return $this->present($value, 0); + } + + /** + * Present a full representation of the value. + * + * If $depth is 0, the value will be presented as a ref instead. + * + * @param mixed $value + * @param int $depth (default: null) + * @param int $options One of Presenter constants + * + * @return string + */ + public function present($value, $depth = null, $options = 0) + { + $data = $this->cloner->cloneVar($value, !($options & self::VERBOSE) ? Caster::EXCLUDE_VERBOSE : 0); + + if (null !== $depth) { + $data = $data->withMaxDepth($depth); + } + + // Work around https://github.com/symfony/symfony/issues/23572 + $oldLocale = setlocale(LC_NUMERIC, 0); + setlocale(LC_NUMERIC, 'C'); + + $output = ''; + $this->dumper->dump($data, function ($line, $depth) use (&$output) { + if ($depth >= 0) { + if ('' !== $output) { + $output .= PHP_EOL; + } + $output .= str_repeat(' ', $depth) . $line; + } + }); + + // Now put the locale back + setlocale(LC_NUMERIC, $oldLocale); + + return OutputFormatter::escape($output); + } +}