| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | <?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 = array();    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 = array())    {        $options = array_merge(array(            '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';    }}
 |