| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | <?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 object $object     *     * @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     *     * @return $this     */    public function register($format, DescriptorInterface $descriptor)    {        $this->descriptors[$format] = $descriptor;        return $this;    }    /**     * {@inheritdoc}     */    public function getName()    {        return 'descriptor';    }}
 |