You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.6 KiB
70 lines
1.6 KiB
<?php |
|
|
|
/* |
|
* This file is part of the Symfony package. |
|
* |
|
* (c) Fabien Potencier <fabien@symfony.com> |
|
* |
|
* For the full copyright and license information, please view the LICENSE |
|
* file that was distributed with this source code. |
|
*/ |
|
|
|
namespace Symfony\Component\VarDumper\Caster; |
|
|
|
use Ds\Collection; |
|
use Ds\Map; |
|
use Ds\Pair; |
|
use Symfony\Component\VarDumper\Cloner\Stub; |
|
|
|
/** |
|
* Casts Ds extension classes to array representation. |
|
* |
|
* @author Jáchym Toušek <enumag@gmail.com> |
|
* |
|
* @final |
|
*/ |
|
class DsCaster |
|
{ |
|
public static function castCollection(Collection $c, array $a, Stub $stub, bool $isNested): array |
|
{ |
|
$a[Caster::PREFIX_VIRTUAL.'count'] = $c->count(); |
|
$a[Caster::PREFIX_VIRTUAL.'capacity'] = $c->capacity(); |
|
|
|
if (!$c instanceof Map) { |
|
$a += $c->toArray(); |
|
} |
|
|
|
return $a; |
|
} |
|
|
|
public static function castMap(Map $c, array $a, Stub $stub, bool $isNested): array |
|
{ |
|
foreach ($c as $k => $v) { |
|
$a[] = new DsPairStub($k, $v); |
|
} |
|
|
|
return $a; |
|
} |
|
|
|
public static function castPair(Pair $c, array $a, Stub $stub, bool $isNested): array |
|
{ |
|
foreach ($c->toArray() as $k => $v) { |
|
$a[Caster::PREFIX_VIRTUAL.$k] = $v; |
|
} |
|
|
|
return $a; |
|
} |
|
|
|
public static function castPairStub(DsPairStub $c, array $a, Stub $stub, bool $isNested): array |
|
{ |
|
if ($isNested) { |
|
$stub->class = Pair::class; |
|
$stub->value = null; |
|
$stub->handle = 0; |
|
|
|
$a = $c->value; |
|
} |
|
|
|
return $a; |
|
} |
|
}
|
|
|