assets
backup
bin
cache
grav-admin
images
logs
pages
system
tmp
user
vendor
antoligy
bin
composer
doctrine
donatj
dragonmantank
erusev
filp
gregwar
guzzlehttp
kodus
league
matthiasmullie
maximebf
miljar
monolog
nyholm
phive
php-http
pimple
psr
ralouphie
rockettheme
seld
symfony
console
Command
CommandLoader
DependencyInjection
Descriptor
Event
EventListener
Exception
Formatter
Helper
DebugFormatterHelper.php
DescriptorHelper.php
FormatterHelper.php
Helper.php
HelperInterface.php
HelperSet.php
InputAwareHelper.php
ProcessHelper.php
ProgressBar.php
ProgressIndicator.php
QuestionHelper.php
SymfonyQuestionHelper.php
Table.php
TableCell.php
TableRows.php
TableSeparator.php
TableStyle.php
Input
Logger
Output
Question
Resources
Style
Application.php
CHANGELOG.md
ConsoleEvents.php
LICENSE
README.md
Terminal.php
contracts
event-dispatcher
polyfill-ctype
polyfill-iconv
polyfill-mbstring
polyfill-php72
polyfill-php73
process
var-dumper
yaml
twig
willdurand
autoload.php
webserver-configs
.htaccess
CHANGELOG.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE.txt
README.md
composer.json
composer.lock
index.php
now.json
robots.txt
95 lines
2.5 KiB
PHP
95 lines
2.5 KiB
PHP
<?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\Console\Helper;
|
|
|
|
use Symfony\Component\Console\Descriptor\DescriptorInterface;
|
|
use Symfony\Component\Console\Descriptor\JsonDescriptor;
|
|
use Symfony\Component\Console\Descriptor\MarkdownDescriptor;
|
|
use Symfony\Component\Console\Descriptor\TextDescriptor;
|
|
use Symfony\Component\Console\Descriptor\XmlDescriptor;
|
|
use Symfony\Component\Console\Exception\InvalidArgumentException;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
|
|
/**
|
|
* This class adds helper method to describe objects in various formats.
|
|
*
|
|
* @author Jean-François Simon <contact@jfsimon.fr>
|
|
*/
|
|
class DescriptorHelper extends Helper
|
|
{
|
|
/**
|
|
* @var DescriptorInterface[]
|
|
*/
|
|
private $descriptors = [];
|
|
|
|
public function __construct()
|
|
{
|
|
$this
|
|
->register('txt', new TextDescriptor())
|
|
->register('xml', new XmlDescriptor())
|
|
->register('json', new JsonDescriptor())
|
|
->register('md', new MarkdownDescriptor())
|
|
;
|
|
}
|
|
|
|
/**
|
|
* Describes an object if supported.
|
|
*
|
|
* Available options are:
|
|
* * format: string, the output format name
|
|
* * raw_text: boolean, sets output type as raw
|
|
*
|
|
* @param OutputInterface $output
|
|
* @param object $object
|
|
* @param array $options
|
|
*
|
|
* @throws InvalidArgumentException when the given format is not supported
|
|
*/
|
|
public function describe(OutputInterface $output, $object, array $options = [])
|
|
{
|
|
$options = array_merge([
|
|
'raw_text' => false,
|
|
'format' => 'txt',
|
|
], $options);
|
|
|
|
if (!isset($this->descriptors[$options['format']])) {
|
|
throw new InvalidArgumentException(sprintf('Unsupported format "%s".', $options['format']));
|
|
}
|
|
|
|
$descriptor = $this->descriptors[$options['format']];
|
|
$descriptor->describe($output, $object, $options);
|
|
}
|
|
|
|
/**
|
|
* Registers a descriptor.
|
|
*
|
|
* @param string $format
|
|
* @param DescriptorInterface $descriptor
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function register($format, DescriptorInterface $descriptor)
|
|
{
|
|
$this->descriptors[$format] = $descriptor;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getName()
|
|
{
|
|
return 'descriptor';
|
|
}
|
|
}
|