[VarDumper] Use hyperlinks in CliDescriptor
This commit is contained in:
parent
f2590d196f
commit
e54e21933a
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\VarDumper\Command\Descriptor;
|
||||
|
||||
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
|
||||
use Symfony\Component\Console\Input\ArrayInput;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\Console\Style\SymfonyStyle;
|
||||
@ -28,10 +29,12 @@ class CliDescriptor implements DumpDescriptorInterface
|
||||
{
|
||||
private $dumper;
|
||||
private $lastIdentifier;
|
||||
private $supportsHref;
|
||||
|
||||
public function __construct(CliDumper $dumper)
|
||||
{
|
||||
$this->dumper = $dumper;
|
||||
$this->supportsHref = method_exists(OutputFormatterStyle::class, 'setHref');
|
||||
}
|
||||
|
||||
public function describe(OutputInterface $output, Data $data, array $context, int $clientId): void
|
||||
@ -62,15 +65,19 @@ class CliDescriptor implements DumpDescriptorInterface
|
||||
|
||||
if (isset($context['source'])) {
|
||||
$source = $context['source'];
|
||||
$rows[] = array('source', sprintf('%s on line %d', $source['name'], $source['line']));
|
||||
$sourceInfo = sprintf('%s on line %d', $source['name'], $source['line']);
|
||||
$fileLink = $source['file_link'] ?? null;
|
||||
if ($this->supportsHref && $fileLink) {
|
||||
$sourceInfo = sprintf('<href=%s>%s</>', $fileLink, $sourceInfo);
|
||||
}
|
||||
$rows[] = array('source', $sourceInfo);
|
||||
$file = $source['file_relative'] ?? $source['file'];
|
||||
$rows[] = array('file', $file);
|
||||
$fileLink = $source['file_link'] ?? null;
|
||||
}
|
||||
|
||||
$io->table(array(), $rows);
|
||||
|
||||
if (isset($fileLink)) {
|
||||
if (!$this->supportsHref && isset($fileLink)) {
|
||||
$io->writeln(array('<info>Open source in your IDE/browser:</info>', $fileLink));
|
||||
$io->newLine();
|
||||
}
|
||||
|
Reference in New Issue
Block a user