mirror of
https://github.com/rectorphp/rector.git
synced 2025-02-24 03:35:01 +01:00
[NodeValueResolver] add EncapsedValueResolver
This commit is contained in:
parent
35b77478ac
commit
86ecf5bfca
@ -0,0 +1,46 @@
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
namespace Rector\NodeValueResolver\PerNodeValueResolver;
|
||||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Scalar\Encapsed;
|
||||
use PhpParser\Node\Scalar\EncapsedStringPart;
|
||||
use Rector\NodeValueResolver\Contract\NodeValueResolverAwareInterface;
|
||||
use Rector\NodeValueResolver\Contract\PerNodeValueResolver\PerNodeValueResolverInterface;
|
||||
use Rector\NodeValueResolver\NodeValueResolver;
|
||||
|
||||
final class EncapsedValueResolver implements PerNodeValueResolverInterface, NodeValueResolverAwareInterface
|
||||
{
|
||||
/**
|
||||
* @var NodeValueResolver
|
||||
*/
|
||||
private $nodeValueResolver;
|
||||
|
||||
public function getNodeClass(): string
|
||||
{
|
||||
return Encapsed::class;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Encapsed $encapsedNode
|
||||
*/
|
||||
public function resolve(Node $encapsedNode): string
|
||||
{
|
||||
$result = '';
|
||||
|
||||
foreach ($encapsedNode->parts as $part) {
|
||||
if ($part instanceof EncapsedStringPart) {
|
||||
$result .= $part->value . ' ';
|
||||
} else {
|
||||
$result .= $this->nodeValueResolver->resolve($part) . ' ';
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function setNodeValueResolver(NodeValueResolver $nodeValueResolver): void
|
||||
{
|
||||
$this->nodeValueResolver = $nodeValueResolver;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user