Spaces:
Sleeping
Sleeping
| /* | |
| * 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\Output\OutputInterface; | |
| use Symfony\Component\Console\Exception\InvalidArgumentException; | |
| /** | |
| * 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(); | |
| /** | |
| * Constructor. | |
| */ | |
| 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'; | |
| } | |
| } | |