PluginProbe
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.13.0
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.13.0
5.13.0 5.12.1 5.12.0 5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 All 83 releases
matomo / app / vendor / prefixed / symfony / console / Helper / DescriptorHelper.php
DescriptorHelper.php
75 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 namespace Matomo\Dependencies\Symfony\Component\Console\Helper;
12
13 use Matomo\Dependencies\Symfony\Component\Console\Descriptor\DescriptorInterface;
14 use Matomo\Dependencies\Symfony\Component\Console\Descriptor\JsonDescriptor;
15 use Matomo\Dependencies\Symfony\Component\Console\Descriptor\MarkdownDescriptor;
16 use Matomo\Dependencies\Symfony\Component\Console\Descriptor\TextDescriptor;
17 use Matomo\Dependencies\Symfony\Component\Console\Descriptor\XmlDescriptor;
18 use Matomo\Dependencies\Symfony\Component\Console\Exception\InvalidArgumentException;
19 use Matomo\Dependencies\Symfony\Component\Console\Output\OutputInterface;
20 /**
21 * This class adds helper method to describe objects in various formats.
22 *
23 * @author Jean-François Simon <contact@jfsimon.fr>
24 */
25 class DescriptorHelper extends Helper
26 {
27 /**
28 * @var DescriptorInterface[]
29 */
30 private $descriptors = [];
31 public function __construct()
32 {
33 $this->register('txt', new TextDescriptor())->register('xml', new XmlDescriptor())->register('json', new JsonDescriptor())->register('md', new MarkdownDescriptor());
34 }
35 /**
36 * Describes an object if supported.
37 *
38 * Available options are:
39 * * format: string, the output format name
40 * * raw_text: boolean, sets output type as raw
41 *
42 * @throws InvalidArgumentException when the given format is not supported
43 */
44 public function describe(OutputInterface $output, ?object $object, array $options = [])
45 {
46 $options = array_merge(['raw_text' => \false, 'format' => 'txt'], $options);
47 if (!isset($this->descriptors[$options['format']])) {
48 throw new InvalidArgumentException(sprintf('Unsupported format "%s".', $options['format']));
49 }
50 $descriptor = $this->descriptors[$options['format']];
51 $descriptor->describe($output, $object, $options);
52 }
53 /**
54 * Registers a descriptor.
55 *
56 * @return $this
57 */
58 public function register(string $format, DescriptorInterface $descriptor)
59 {
60 $this->descriptors[$format] = $descriptor;
61 return $this;
62 }
63 /**
64 * {@inheritdoc}
65 */
66 public function getName()
67 {
68 return 'descriptor';
69 }
70 public function getFormats() : array
71 {
72 return array_keys($this->descriptors);
73 }
74 }
75